5.jeecg的登录及权限(jwt+shiro)

1.登录流程

controller
5.jeecg的登录及权限(jwt+shiro)_第1张图片
先验证验证码
然后验证用户是否有效
5.jeecg的登录及权限(jwt+shiro)_第2张图片
然后验证用户名和密码,通过的话会生成token
5.jeecg的登录及权限(jwt+shiro)_第3张图片
生成token
5.jeecg的登录及权限(jwt+shiro)_第4张图片
生成token之后存到返回结果中返回给前端 key为”token”,然后设置redis缓存过期时间,这个时间是token过期时间的2倍,用作续期token使用。具体方法在ShiroRealm这个类中。

JWTToken刷新生命周期 (实现: 用户在线操作不掉线功能)

  • 1、登录成功后将用户的JWT生成的Token作为k、v存储到cache缓存里面(这时候k、v值一样),缓存有效期设置为Jwt有效时间的2倍
  • 2、当该用户再次请求时,通过JWTFilter层层校验之后会进入到doGetAuthenticationInfo进行身份验证
  • 3、当该用户这次请求jwt生成的token值已经超时,但该token对应cache中的k还是存在,则表示该用户一直在操作只是JWT的token失效了,程序会给token对应的k映射的v值重新生成JWTToken并覆盖v值,该缓存生命周期重新计算
  • 4、当该用户这次请求jwt在生成的token值已经超时,并在cache中不存在对应的k,则表示该用户账户空闲超时,返回用户信息已失效,请重新登录。
  • 注意: 前端请求Header中设置Authorization保持不变,校验有效性以缓存中的token为准。
  • 用户过期时间 = Jwt有效时间 * 2。
  • 5.jeecg的登录及权限(jwt+shiro)_第5张图片
    Jwtutil的sign方法就是根据用户名生成token
    5.jeecg的登录及权限(jwt+shiro)_第6张图片

2.token续期流程

请求进来会进行登录认证
5.jeecg的登录及权限(jwt+shiro)_第7张图片
从token中获取用户信息,如果获取到了,且用户状态正常,就判断token是否过期了。
5.jeecg的登录及权限(jwt+shiro)_第8张图片
如果过期了就续期。5.jeecg的登录及权限(jwt+shiro)_第9张图片

  • 过期的话重新生成token,重新设置过期时间,这时前端传的token也不需要变,只改redis缓存内容即可,因为是根据token获取用户信息来验证,登录的用户没有变的话,从token中获取的信息也是相同的,即使token的部分内容不同。这样过期的时候 就又有了一个小时的有效时间 redis是两个小时。

3.shiro权限认证

5.jeecg的登录及权限(jwt+shiro)_第10张图片

1.ShiroConfig类

5.jeecg的登录及权限(jwt+shiro)_第11张图片

1.shiroFilter方法

5.jeecg的登录及权限(jwt+shiro)_第12张图片
5.jeecg的登录及权限(jwt+shiro)_第13张图片

2.securityManager

5.jeecg的登录及权限(jwt+shiro)_第14张图片

3.缓存相关的

5.jeecg的登录及权限(jwt+shiro)_第15张图片
5.jeecg的登录及权限(jwt+shiro)_第16张图片

2.ShiroRealm类

具体执行拦截的类

5.jeecg的登录及权限(jwt+shiro)_第17张图片

1.support

5.jeecg的登录及权限(jwt+shiro)_第18张图片
应该是重新定义的token,需要重写此方法吧。(盲猜)

2.doGetAuthenticationInfo

5.jeecg的登录及权限(jwt+shiro)_第19张图片

3.checkUserTokenIsEffect

5.jeecg的登录及权限(jwt+shiro)_第20张图片

4.jwtTokenRefresh

5.jeecg的登录及权限(jwt+shiro)_第21张图片

5.doGetAuthorizationInfo

5.jeecg的登录及权限(jwt+shiro)_第22张图片

3.JwtToken类

实现了shiro的AuthenticationToken接口。
5.jeecg的登录及权限(jwt+shiro)_第23张图片

4.JwtFilter类

拦截的源头,请求进来会先到这里,然后交给ShiroRealm处理
5.jeecg的登录及权限(jwt+shiro)_第24张图片
5.jeecg的登录及权限(jwt+shiro)_第25张图片

5.jeecg的登录及权限(jwt+shiro)_第26张图片

你可能感兴趣的:(jeecg3.4.2学习笔记,java)