随着智能机的普及,在手持设备端做用户验证是一种较为高效,安全的手段,而在pc端利用已经鉴权过的手持设备扫码登录不仅方便,而且安全。
key:qrlogin_年月日
field:qrlogin_唯一标识
value:用户id
本文档旨在指导二维码登录功能的开发。
本文代码git https://github.com/xvshu/qrlogin
数据结构说明
redis节点存储数据格式为hash结构:key:qrlogin_年月日
field:qrlogin_唯一标识
value:用户id
失效时间:2天
模块设计
整体流程如图所示:
生成二维码流程:
服务端:
1,获取二维码;
2,调用分布式id服务:获取唯一标识
3,唯一标识:存入redis
扫描二维码关注公众号,回复:
1462701 查看本文章
4,展示二维码
扫码登录流程:
APP:
5,扫描二维码
6,免授权登录
服务端:
7,存储唯一标识与用户对应关系
8,定时扫描唯一标识是否对应用户
9,查询唯一标识用户对应关系
10,匹配用户成功自动登录
11,自动注册CAS
总结
二维码登录的简单设计相对来说比较容易,但是后期要考虑ddos攻击等安全问题,一般从两个方面入手:
1. 生成二维码网关
在页面上对生成二维码有严格性能要求,同一ip同一时间只允许生成3次每秒,超过此限制,返回过于频繁,自动失败。
2. 授权登录(APP)网关
在页面上对授权有严格性能要求,同一ip同一时间只允许登录1次每分钟,超过此限制,返回过于频繁,自动失败。