需求:
设计一个手机号码注册功能
* 符合无状态服务原则
* 要求有图片验证码、短信验证码
设计方案:
说明:
(1)用户每次刷新页面,或刷新验证码时,都向后端发出请求,更新图形验证码缓存,并重置缓存有效期
(2)防机器人刷机,限制IP单位时间请求次数
(3)图形验证码/短信验证码 校验规则:
-- 验证码是否能取到(是否失效)
-- 验证码是否正确
-- 验证码校验后,无论正确与否,直接失效(删除)
参考资料:
无状态服务:https://yq.aliyun.com/articles/59799
图片验证码在携程的实践之路:https://zhuanlan.zhihu.com/p/27524606
App后台开发运维和架构实践学习总结(4)-- app的注册和登录功能设计:http://blog.csdn.net/u012562943/article/details/53316922
其他:
从12306谈起验证码的架构:http://blog.csdn.net/jiang1013nan/article/details/18279149
java web验证码生成后一般在什么地方保存这个验证码?:https://zhidao.baidu.com/question/1447930537547888420.html
备注:
设计这个,比较关注的点 在于:
(1)图形验证码 如何与用户对应起来,百度了些资料,差不多都是放到session中的,这是有状态服务,尝试了下 百度的注册,发现百度注册会先返回一个token,不知道百度拿这个token 是做什么用的,我这里把它作为 图形验证码与用户 的对应纽带
(2)安全性,哎,参考的资料都找不到了,有一篇真的写的很好,大意就是 图形验证码的 生成、存放位置,校验方式,以及对应的破解方法,总结的说,图形验证码后端生成,后端校验,校验完后,无论成功与否,都要删掉
备注:什么是无状态服务???