社区
Web 开发 帖子详情 手机短信验证码应该存储在哪里 sq287197314 2018-02-08 09:25:03 最近在做手机短信验证登录功能,想问一下各位大佬,短信验证码发送之后,应该把验证码存在哪里。
我现在能想到的有这几个地方,session,cache,cookie,数据库。
希望大家能分享一下经验,说说存在哪里的好处。
...全文
8779 21 打赏 收藏 手机短信验证码应该存储在哪里 最近在做手机短信验证登录功能,想问一下各位大佬,短信验证码发送之后,应该把验证码存在哪里。 我现在能想到的有这几个地方,session,cache,cookie,数据库。 希望大家能分享一下经验,说说存在哪里的好处。 复制链接
扫一扫 分享 转发到动态 举报 AI 作业
写回复 配置赞助广告取 消
确 定
用AI写文章 21 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 weixin_40004891 2018-12-20 打赏举报 回复 1 是的,如果这样写,但纯存一个key值肯定后者要覆盖前者,你可以用随机生成的验证码加上token或者id存入redis,但是这样还会有个问题,一旦并发量大,那么redis也是很难去找,浪费效率,所以在生产的时候,你可以加冒号,在redis中自动生成指定的文件夹 evanweng 2018-02-22 打赏举报 回复 引用 9 楼 sq287197314 的回复:redis之前没用过,想问一下,如果放在redis里面,用一个常量当key值,两个不同的用户获取验证码后,前一个会被覆盖掉,这样的话是不是应该用用户的手机号当key值。
还有个问题,有什么办法能避免同一个用户在短时间内连续获取验证码。
可以用手机号码做key,设置过期时间,发短信前先get一下,n秒内能get到值就不允许重复发送 evanweng 2018-02-22 打赏举报 回复 引用 13 楼 hjgzj 的回复:放哪里都行,就是别TM瞎扯效率,一个字符串你跟我讲效率?
不讲效率讲什么?看来是没经历过高并发的人 OutMicro 2018-02-18 打赏举报 回复 引用 9 楼 sq287197314 的回复:redis之前没用过,想问一下,如果放在redis里面,用一个常量当key值,两个不同的用户获取验证码后,前一个会被覆盖掉,这样的话是不是应该用用户的手机号当key值。
还有个问题,有什么办法能避免同一个用户在短时间内连续获取验证码。
用手机号作key,时间+验证码作值。前台设置60s按钮才能重新点击,后台收到验证请求的时候根据手机号查询redis,如果未到60s不发送,到了就发送更新key。 danny_shu 2018-02-12 打赏举报 回复 放redis 山楂罐头 2018-02-11 打赏举报 回复 目前我是放在redis缓存里。
后台接到前台传的手机号,在redis里获取这个手机号,如果存在就是已经发过。
生成验证码,并放到redis里。同时设置一个超时时间,然后调发送短信的服务平台。
登录后台,接到前台传的手机号。在redis里获取对应的验证码。验证码为空,给出提示重新获取。
然后判断前台传进来的验证码和redis里的是否一致
然后做你的登录逻辑
之后删除掉这条验证码的redis缓存 dong_19890208 2018-02-10 打赏举报 回复 引用 14 楼 hjgzj 的回复:[quote=引用 7 楼 maradona1984 的回复:]
放数据库,毕竟发短信跟钱有关,持久化是有必要的
赞同 到时候 统计发了多少短信 花了多少钱[/quote]发送短信及短信内容分类的可以单独入库,验证码是要后面验证客户信息的需要跟session或token绑定,这种绑定只是临时性的,应该放在缓存里 tony4geek 2018-02-09 打赏举报 回复 放在缓存,数据库,看业务都可以 Mars佩奇 2018-02-09 打赏举报 回复 放缓存里最好Redis sq287197314 2018-02-09 打赏举报 回复 redis之前没用过,想问一下,如果放在redis里面,用一个常量当key值,两个不同的用户获取验证码后,前一个会被覆盖掉,这样的话是不是应该用用户的手机号当key值。
还有个问题,有什么办法能避免同一个用户在短时间内连续获取验证码。 dong_19890208 2018-02-09 打赏举报 回复 2 1、验证码时要跟客户端关联的,也就是要跟session(web页面)或者token(app)关联的,如果是浏览器访问就可以放在session,如果是app的话就需要在缓存里,如果两者都有那就统一放在缓存;
2、如果是单实例应用而且访问量不大,session或者缓存就可以直接用放在内存;如果访问量过大或者是集群部署的情况就需要用redis充当外部缓存或者外部session了 maradona1984 2018-02-09 打赏举报 回复 放数据库,毕竟发短信跟钱有关,持久化是有必要的 Alvis_you 2018-02-09 打赏举报 回复 redis 本地内存 或者最差劲了你存个文件里 我纯洁全身都纯洁 2018-02-09 打赏举报 回复 引用 7 楼 maradona1984 的回复:放数据库,毕竟发短信跟钱有关,持久化是有必要的
赞同 到时候 统计发了多少短信 花了多少钱 我纯洁全身都纯洁 2018-02-09 打赏举报 回复 放哪里都行,就是别TM瞎扯效率,一个字符串你跟我讲效率? line_us 2018-02-09 打赏举报 回复 看看高手意见 xls丶 2018-02-08 打赏举报 回复 我以前一直放在session中 nyhyn 2018-02-08 打赏举报 回复 userId和业务类型拼接的redis key。存放redis中。若业务量不大存放到内存中,guava cache。 yannsPeng 2018-02-08 打赏举报 回复 redis。 眉宇下的小格调 2018-02-08 打赏举报 回复 一般缓存里就可以了,如果并发验证量大就放redis,提高验证效率 加载更多回复(1) 获取手机短信验证码源码 获取手机短信验证码源码 java发送手机短信验证码 java手机短信验证码,demo,简单粗暴,粘过去就可以用。 详细介绍Java阿里云的短信验证码实现 主要介绍了详细介绍Java阿里云的短信验证码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 C#手机短信验证码 电信平台免费的手机短信验证码--C#手机短信验证码 JS实现获取短信验证码功能(前台代码) 也是通过网络搜集整理的,我自己在实际项目中用到,使用了jquery技术,很简单,全套的,保证一看就懂。
Web 开发
81,119
社区成员
341,741
社区内容
发帖 与我相关 我的任务 Web 开发 Java Web 开发 复制链接
扫一扫 分享 确定 社区描述 Java Web 开发 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告 试试用AI创作助手写篇文章吧
+ 用AI写文章