Skip to content

Sa-token

  • 是一个轻量级Java权限认证框架
  • 应用场景:登录和访问Web方法
  • 登录流程:客户端发起登录请求,Web方法需要去调用后端的Java程序,去数据库验证一下登录的信息是否正确,如果用户名和密码都没有问题,就可以判定用户登录成功,需要给客户端颁发一个登录成功的凭证,即令牌(token)。Satoken框架会根据当前用户的ID、令牌过期时间、随机数经过加密之后就形成了令牌字符串。Satoken生成完令牌之后,会将这个令牌缓存到Redis里面(防止令牌的伪造),然后将令牌返回给Web方法,在Web方法里面把令牌绑定到响应里面,返回给客户端。若客户端是浏览器,则可以在浏览器的localstory里面保存这个令牌字符串,将来客户端再发送HTTP请求的时候,就会把这个令牌字符串随着请求发送给Web方法,Web方法经过检验发现传过来的令牌是没问题的,就认为是登录过了,那就允许访问Web方法。反之就认为没有登录或者令牌已经过期,需要重新登录。如果客户端保存的令牌被窃取了,则其他的客户端就可以冒充当前用户访问Web方法。在网络传输当中令牌是最容易被窃取,这样可以把网络协议从HTTP换成HTTPS,https会对传输的内容加密。
  • 在Web方法里面怎么去调用Satoken框架去生成令牌:借助工具类StpUtil里面有一个静态方法login,就可以向SaToken会话对象传递用户ID。生成令牌是调用StpUtil中的另外一个静态方法getTokenValue
  • 另外一种应用场景:有些Web方法在调用的时候要求必须在成功登录之后,才可以调用Web方法。Web方法在验证用户有没有成功登录,去让SaToken框架去验证客户端提交过来的HTTP请求里面的令牌是否有效,如果有效就可以执行Web方法,如果无效那么Web方法就有权拒绝执行,Web方法就直接返回一个401状态码给客户端。SaToken为了避免客户端提交过来的令牌是伪造的,会去验证令牌在Redis里面是否有存档,如果有存档,才可以认为这个令牌是彻底有效的。