前言
1.放弃Cookie,Session,使用JWT进行鉴权,完全实现无状态鉴权。
2.JWT密钥支持过期时间;jwt作为创建验证token工具,并选择一种验证方式与算法。
3.使用redis做缓存处理,缓存token等等登录信息,以实现单点登录与超时登录功能。
4.密码加密(采用AES-128 + Base64的方式)。
5.根据RefreshToken自动刷新AccessToken。
6.对跨域提供支持。
项目整体介绍
当我们开发需要简单的鉴权功能时,springboot更快捷、简单的集成JWT,使得项目更加简洁(Compact)、自包含(Self-contained)、安全(security);鉴权的流程为下。
1.用户登陆之后(user/login),使用密码对账号进行签名生成并返回token并设置过期时间;成功返回加密的AccessToken放在Response Header的Authorization属性中,失败直接返回401错误(帐号或密码不正确)。
2.前端将token保存到本地,并且每次发送请求时都在header上携带token。
3.shiro过滤器拦截到请求并获取header中的token,并提交到自定义realm的doGetAuthenticationInfo方法。
4.通过jwt解码获取token中的用户名,从数据库中查询到密码之后根据密码生成jwt效验器并对token进行