这是一个创建于 859 天前的主题,其中的信息可能已经有所发展或是发生改变。
要求是在登录页面(现在只有密码登录功能)边上做个扫码登录功能(不需要用户点击就展示二维码),扫码记录需要永久保留。
流程:
浏览器:访问登录页面->浏览器本地随机生成一个 UUID (避免每次用户刷新页面都多一条记录,同时少一个请求),拼接到登录 URL 中生成二维码中->每秒轮询一次扫码记录是否存在->轮询时服务器发现扫码记录则创建 Session 完成登录,同时保存 IP 地址等必要客户端信息并更新失效时间为当前时间。
客户端:扫描浏览器生成的二维码->数据库创建扫码记录,包含用户 ID ,有效期 10 秒。
数据库字段:
QuickLoginChallengeGuid
UserId
ExpiredAt
CreatedAt
UpdatedAt
安全顾虑:是否存在灰产使用大量肉鸡扫描 UUID 的可能?还是 32 位 16 进制字符已经足够避免暴力尝试了?
|
|
1
edis0n0 2022-08-20 18:57:16 +08:00
主键是 QuickLoginRecordId 忘记写上了,因为 ChallengeGuid 有可能被二次使用。
|