redis储存用户登录信息

  1. 登录

    1. 用户输入账号密码,点击登录
    2. 后台查数据库,验证用户信息
    3. 储存session(默认缓存过期时间为3天)
      1. sessionId = md5(userId + assistant +时间戳 + salt),
      2. 将用户信息储存到key为sessionId的hash中
      3. 用户信息里面包含
        {
         id:1,
         name: 'wanna',
         username: 'admin@medlinker.net',
         userId: 9999,
         imSession: 'SAJSKJNCUCABI',
         assistant_user: {
             id: 3,
             role: 2,
             name: 'wanna'
         }
        }
    4. 将imSession 这块之前有逻辑了的,就简单储存就好
    5. 返回
      {
      "errcode": 0,
      "errmsg": "success",
      "data": {
       "session": "panel_assistant_session_1",
       "imSession": "panel_assistant_imSession_1"
      }
      }
  2. 用户请求
    在header里面带上Authorization: panel_assistant_session_1
    所有请求过AssistantAuthenticate中间件
    中间件获取到session后,去redis查看是否有该缓存来判断用户是否登录

    这里只判断panel的session

  3. 退出
    通过header里的Authorization找到panel缓存,通过panel的user信息找到imSession,先删除im的缓存,在删除panel的缓存

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1

这么麻烦,直接把session驱动改为redis不就行了!你这样本质还是token模式,比较适合单点登录吧!

3年前 评论
Iwanna (楼主) 3年前
Imuyu (作者) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!