• 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处理
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    阿里规范说MySQL单表行数不要超过2000w,为啥?
    滚动轮加载的两种js方法及模态框拖拽归总
    Vue源码学习之nextTick
    这是一个很废的人的比赛经历
    4.1提出问题&4.2拉格朗日插值
    基于 idea 将 springboot 应用部署到 docker环境
    通过map获取json指定字段
    2024腾讯游戏安全技术竞赛-机器学习赛道
    外包干了2个月,技术退步明显...
    Linux常用基本指令
  • 原文地址:https://blog.csdn.net/weixin_46666822/article/details/127829840