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


    1.登录流程

    controller
    在这里插入图片描述
    先验证验证码
    然后验证用户是否有效
    在这里插入图片描述
    然后验证用户名和密码,通过的话会生成token
    在这里插入图片描述
    生成token
    在这里插入图片描述
    生成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。
    • 在这里插入图片描述
      Jwtutil的sign方法就是根据用户名生成token
      在这里插入图片描述

    2.token续期流程

    请求进来会进行登录认证
    在这里插入图片描述
    从token中获取用户信息,如果获取到了,且用户状态正常,就判断token是否过期了。
    在这里插入图片描述
    如果过期了就续期。在这里插入图片描述

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

    3.shiro权限认证

    在这里插入图片描述

    1.ShiroConfig类

    在这里插入图片描述

    1.shiroFilter方法

    在这里插入图片描述
    在这里插入图片描述

    2.securityManager

    在这里插入图片描述

    3.缓存相关的

    在这里插入图片描述
    在这里插入图片描述

    2.ShiroRealm类

    具体执行拦截的类

    在这里插入图片描述

    1.support

    在这里插入图片描述
    应该是重新定义的token,需要重写此方法吧。(盲猜)

    2.doGetAuthenticationInfo

    在这里插入图片描述

    3.checkUserTokenIsEffect

    在这里插入图片描述

    4.jwtTokenRefresh

    在这里插入图片描述

    5.doGetAuthorizationInfo

    在这里插入图片描述

    3.JwtToken类

    实现了shiro的AuthenticationToken接口。
    在这里插入图片描述

    4.JwtFilter类

    拦截的源头,请求进来会先到这里,然后交给ShiroRealm处理
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    Ubuntu下ESP-IDF的环境搭建
    上海亚商投顾:沪指窄幅震荡 煤炭板块午后大涨
    Java基础面试题
    VSCode 快速移动光标至行尾
    node.js使用multer在vue中实现图片上传
    融合与创新:数据堂骨龄标注工具为医生赋能
    【Redis】对象
    13-bean创建流程4-反射创建bean
    pbjs 无法编码 bytes 类型数据问题的解决方案
    AGENS算法c++实现
  • 原文地址:https://blog.csdn.net/weixin_46666822/article/details/127829840