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 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

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

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

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