一、要求
- 二维码图片、账号、密码均通过其他渠道下发;
- 用户上传二维码,同时输入用户名和密码,输入的用户必须为二维码内的用户;
- 要有图片验证码,退出登录,同一用户登录后自动挤掉旧的会话;
二、思路
- 上传扫描成功后,返回二维码内的账号hash,登录过程带上这个hash,以保证输入账号与二维码的一致。
- 使用JWT方案,其中jwt中不存放任何真实用户信息,仅包含代表此次登录的loginKey,是一个随机串。
- 涉及三个关键缓存:
- CaptchaCache:缓存验证码信息,key为一个随机串,value为生成的验证码值,登录时带上key和用户输入的验证码。
- TokenCache:缓存jwt中的负载信息,key为用户主键,value为jwt中的loginKey;用户登录时先根据主键从缓存中得到旧loginKey,根据旧loginKey去UserCache删除旧用户信息,达到挤掉的效果;挤掉后存储本次登录的新pkId -> loginKey及loginKey -> user;退出逻辑与挤掉操作类似。
- UserCache:缓存本次登录的用户信息,本次登录会话的用户基本信息、角色、权限等数据都从这里获取;登录有效性也依靠此缓存的存在性来判定。
原文地址:https://www.cnblogs.com/JaxYoun/p/12607268.html
时间: 2024-08-01 00:14:38