[关闭]
@andy2015 2019-03-26T07:16:45.000000Z 字数 1477 阅读 90

用户认证流程

  1. 用户登录成功后会将JWT生成的Token作为k、v存储到Redis cache缓存里面,并将Token返回给请求客户端,客户端需要存储该token用于后续请求;
  2. 当该用户再次请求时,需要将认证Token设置在Request Header的X-Access-Token中,然后后端通过JWTFilter层层校验之后会进入到doGetAuthenticationInfo进行身份验证;
  3. 当该用户本次请求JWTToken值还在生命周期内,则会通过重新PUT的方式k、v都为Token值,缓存中的token值生命周期时间重新计算(这时候k、v值一样);
  4. 当该用户本次请求jwt生成的token值已经超时,但该token对应cache中的k还是存在,则表示该用户一直在操作只是JWT的token失效了,程序会给token对应的k映射的v值重新生成JWTToken并覆盖v值,该缓存生命周期重新计算;
  5. 当该用户本次请求jwt在生成的token值已经超时,并在cache中不存在对应的k,则表示该用户账户空闲超时,返回用户信息已失效,请重新登录。

外部系统登录认证集成流程

  1. 首次登录操作;

    登录API:

    • 请求URL:http://ip:8080/user-center/sys/login
    • 请求方法:POST
    • 请求参数:username 用户名
      password 密码
      loginType 登录类型(simple/LDAP, 可选参数;缺省为simple)
    • 响应格式: json
    • 响应示例:
      1. {
      2. "success": true,
      3. "message": "登录成功",
      4. "code": 200,
      5. "result": {
      6. "userInfo": {
      7. "id": "a75d45a015c44384a04449ee80dc3503",
      8. "username": "jeecg",
      9. "realname": "jeecg",
      10. "password": "3dd8371f3cf8240e",
      11. "salt": "vDDkDzrK",
      12. "avatar": "user/20190220/e1fe9925bc315c60addea1b98eb1cb1349547719_1550656892940.jpg",
      13. "birthday": null,
      14. "sex": null,
      15. "email": null,
      16. "phone": null,
      17. "status": 1,
      18. "delFlag": "0",
      19. "createBy": "admin",
      20. "createTime": "2019-02-13 16:02:36",
      21. "updateBy": "admin",
      22. "updateTime": "2019-02-20 18:30:50"
      23. },
      24. "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NTM1ODU0MjYsInVzZXJuYW1lIjoiamVlY2cifQ._fJxrmGQj4sB6xF8gPpW4wMvb4Dcf69QxhLGPKcBcaM"
      25. },
      26. "timestamp": 1553583626478
      27. }
  2. 判定用户是否登录或者会话超时;

    业务系统相关Filter代码片段如下:

    1. String token = httpServletRequest.getHeader("X-Access-Token");
    2. String cacheToken = null == token ? token : redisUtil.get("PREFIX_USER_TOKEN " + token);
    3. if (null == token || null == cacheToken) {
    4. // TODO 跳转到登录页面,进行登录操作
    5. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注