登陆验证手机短信验证码方案
客户登陆通过手机发送验证码登陆,如何防止同一个手机号频繁获取验证码,目前获取的短信存入数据库中,期待大神给个好的方案。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
客户登陆通过手机发送验证码登陆,如何防止同一个手机号频繁获取验证码,目前获取的短信存入数据库中,期待大神给个好的方案。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(7)
对于发送短信的限制,在客户端和服务端都要加上限制,客户端比较容易,给按钮加个倒计时就能防住大部分的小白用户。服务器端,使用Redis的setex是个很好的方法,可以在成功发送短信给某个手机号后使用setex命令加入一个有时限的标志位。如果这个标志位存在的话,就不发送并提示错误。比如这样
当然上面的限制属于比较简单的,你也可以根据需要加入IP,Session方面的限制。
做这种功能我们都会去参考一些大型软件,因为这些软件基本都是满足用户的使用习惯。
所以,当你注册淘宝啊等等一些软件的时候,它会加入一个倒计时的操作,这样在前端就控制住了不能够频繁点击
的问题,也符合用户的使用习惯,谢谢!
使用redis缓存做键值对存储,手机号做key,验证码做value,然后做上过期时间。用户发起请求验证码时就去redis里面找,如果key存在则不发短信并提示,如果不存在,则发送短信
获取频率限制下,如楼上所说方案即可,也可记录一下频次,对过于频繁的实施验证码策略。
1.前端js控制60秒才能重发。
2.验证码发送成功后,把发送时间,手机号,验证码都存入session。如果有新的发送请求,比对上一次发送时间,限制30分钟等
肯定是后台限制的,前端限制的不靠谱。
不过如果你用的阿里之类的平台,平台本身就会有限制,每分钟每小时每天最多给同个手机号发送多少条短信。不同手机号就没辙了。
这个问题和其他答案水平都太低!作为项目大量用到短信验证码的我真的看不下去了!
问题本身,限制给同个用户频繁发送短信,这种需求还要提吗?不就是缓存到redis或mongodb或mysql,发送的时候检测下。
而用到短信验证码,更加关键的是防止短信接口被盗刷,也就是给不同用户频繁发送短信,这个问题竟然没有提出来。唉,segmentfault的整体技术水平,讨论氛围还是不够的。
如果不想费心,还是试试一些集成的账号系统吧,比如 http://www.onlyid.net 的。就不要再提这种问题浪费大家时间了。