Skip to content

权限与会话校验机制说明

一、登录流程

  1. 用户提交登录请求
    • 前端传递用户名、加密后的密码、时间戳等参数。
  2. 服务端校验
    • 检查参数完整性。
    • 查询用户信息,校验用户是否存在。
    • 校验密码(结合盐值和时间戳加密比对)。
  3. 生成Token与会话
    • 登录成功后,调用 Sa-Token 的 StpUtil.login(userName) 生成 Token,并在服务端创建 Session(会话数据)。
    • Token 返回给前端,后续请求需携带该 Token。

二、权限校验流程

  1. 登录校验(会话校验)
    • LoginInterceptor 拦截器实现。
    • 通过 StpUtil.isLogin() 判断用户是否已登录(即 Session 是否有效)。
    • 未登录则抛出异常,阻止后续操作。
  2. 权限校验
    • AuthInterceptor 拦截器实现。
    • 获取请求头中的模块名(TableName)、当前用户、角色等信息。
    • 查询用户是否拥有访问该模块的权限。
    • 无权限则抛出异常。

三、会话机制

  • Session:服务端保存的用户会话数据,记录登录状态、用户信息等。
  • Token:客户端持有的访问凭证,每次请求需携带。
  • 会话存储:可配置为内存、Redis等,支持分布式部署。
  • 会话失效:Session 超时、被清理、被踢下线等,都会导致用户需重新登录。

四、Token 与 Session 的关系

  • Token 是客户端的“钥匙”,Session 是服务端的“门锁”。
  • 每次请求,服务端用 Token 查找 Session,判断用户是否登录。
  • 如果 Session 被删除或失效,即使 Token 还在,用户也会被判定为未登录,必须重新登录。

五、常见问题解答

1. 为什么有两个拦截器?

  • LoginInterceptor 负责登录(会话)校验,防止未登录用户访问系统。
  • AuthInterceptor 负责权限校验,防止用户越权操作。
  • 分层设计,职责单一,安全性高。

2. Token 有效但 Session 被删掉还能访问吗?

  • 不能。Session 是服务端判断登录状态的唯一依据,Session 失效后,用户必须重新登录。

3. 使用的权限中间件是什么?

  • 本系统使用 Sa-Token 作为权限与会话管理框架。

4. 支持哪些权限管理功能?

  • 登录认证、权限认证、会话管理、踢人下线、分布式会话等。

✨ 网站运行时间: 3年11月15天 ❤️ 道阻且长,行则将至 - 微信号: heikedreamer