为什么要限制一分钟之内只能发送一次手机短信呢?
防止恶意攻击.
什么场景需要发送手机短信?
(a)手机号注册
(b)通过手机找回密码
(c)手机号绑定,手机号换绑
(d)转账时手机号接收动态口令(一次一密)
1,前端
一般前端会有倒计时,在倒计时的过程中是不允许点击"发送短信"按钮的:
但是如果用户刷新页面呢?
如果刷新页面,那么页面的倒计时就会中断.
这是需要服务器端提供支持:服务器端要记录上次发送短信的时间戳
2,后台
第一次发送时lastSendSMSTime 为null,于是设置当前时间A,说明不需要倒计时 第二次访问时,lastSendSMSTime 不为null,获取其值,为时间A; 同时获取当前时间B,计算时间A,和时间B 的差量delter. 业务逻辑是:拿delter和60进行比较,如果delter>60,说明两次发短信的时间相差60秒,则允许发送,会重置时间为当前时间; 若delter<=60秒,则不允许发送,并且不会重置时间
|
后台获取倒计时剩余时间的方法:
/*** * 倒计时还剩余多长时间 * @param mobile : 手机号 * @param reallySendSMS : 是否真正发送短信 * @return : second */ public int sMSWaitingTime(String mobile,boolean reallySendSMS) { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); RedisHelper rdsHelper = RedisHelper.getInstance(); String cid = getCid(request, response); String lastSendSMSTime = rdsHelper.getCache(cid+mobile); if(StringUtil.isNullOrEmpty(lastSendSMSTime)) { if(reallySendSMS){ saveExpxKeyCache(request, response, mobile, String.valueOf(DateTimeUtil.getCurrentTimeSecond()),60); } return 0;//不需要倒计时 } else { long lastSendSMSTimeSecond=Long.parseLong(lastSendSMSTime); long currentTimeSecond=DateTimeUtil.getCurrentTimeSecond(); int delter=(int) (currentTimeSecond-lastSendSMSTimeSecond); if(delter>=60){ return 0;//不需要倒计时 }else{ return 60-delter; } } }
接口:
/** * @return {"result":true,"remainingSecond":39}<br> * {"result":false,"errorFieldName":"mobile","remainingSecond":0} * @api {get} /wap/countdownSMS 发送手机短信倒计时剩余时间 * @apiName 发送手机短信倒计时剩余时间 * @apiGroup Login * @apiVersion 1.0.0 * @apiDescription 发送手机短信倒计时剩余时间 * @apiPermission 无权限要求 * @apiParam {String} mobile 手机号 */ @SessionCheck @RequestMapping("/countSMS") @ResponseBody public String countdownSMS(HttpSession httpSession, HttpServletRequest request , String mobile) { SMSRemainingTimeDto dto = new SMSRemainingTimeDto(); if (StringUtil.isNullOrEmpty(mobile)) { dto.setResult(false); dto.setErrorFieldName("mobile"); dto.setErrorMessage("请输入手机号"); return dto.toJson(); } else { int remainingTime = sMSWaitingTime(mobile, false); dto.setResult(true); dto.setRemainingSecond(remainingTime); return dto.toJson(); } }
接口功能:返回倒计时的剩余秒数
3,什么时候调用该接口呢?
(1)手机号输入框失去焦点时;
(2)页面加载完成时,判断手机号输入框是否有值,有值就调用.
window.onload 或者jquery的$(function)
相关推荐
主要为大家详细介绍了java发送短信系列之限制发送频率,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了基于PHP实现短信验证码发送次数限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
提交十万条号码到服务器,只需要一分钟。 14.客户发送的号码可以随意打包下载。 15.设置短信发送时间,可以设置周日到周六中的任一天可以发送。也可以设置发送的具体时间,例如:星期日到星期六的07:00到20:30.可以...
160021 : 【短信】相同的内容发给同一手机一天中只能发一次 160022 : 【短信】对同一个手机一天发送的短信超过限制次数 短信网关配置文件 return [ 'smser' => [ 'class' => 'app\extensions\message\Smser', '...
一开始只能用于通电话、发短信,渐渐地我们可以用手机听音乐、玩游戏。而现在的手机除了那些简单的功能以外还加入了现代化元素,除了手机可以看电视以外还可以上网、上QQ还可以与别人视频通话聊天。如此可见手机在...
从发送验证码开始,前端(客户端)会进行一个60秒的倒数,在这一分钟之内,用户是无法提交多次发送信息的请求的。这种方法虽然使用得比较普遍,但是却不是非常有用,技术稍微好点的人完全可以绕过这个限制,直接发送...
业务需求中经常有需要用到计数器的场景:譬如一个手机号一天限制发送5条短信、一个接口一分钟限制多少请求、一个接口一天限制调用多少次等等。使用Redis的Incr自增命令可以轻松实现以上需求。以一个接口一天限制调用...
一次支持多个设备 部署 用调制解调器的COM端口更新conf.ini [DEVICES]部分。 对于前。 COM10或/dev/USBtty2 跑步 API规范 / api / sms / [ POST ] 参数移动 手机号码发送消息给 该数字应具有国家/地区代码前缀 ...
是否有可能让在第一次去连接server时上报自己ID(可以自定义)功能?答:支持自定义,详见“配置保存指令”的register字段。在非透传模式报文也是发的AT命令格式吗?答:不用AT,非透传模式参考指令“多通道通信报文恢复...
最近进行的一项Ipsos-Reid调研表明.:由于能够及时访问信息和进行通信、大多数BlackBerry用户每天都可以将53分钟的停工时间转化为工作时间。通过使专业人士在远离办公室时也能继续工作、BlackBerry可以将整个团队的...
支持预订到达前30(可以设置)分钟每1(可以设置)分种提示一次 场地到时退场提醒,也支持设置提前时间,频率。 提示方式多样,会出现小老人,同时状态栏出现信息图标。 支持声音提示 2.10两种收费方式。 普通【租...
用户评分记录 版主管理记录 增加搜索功能 用户可自选贴子排序方式 用户级别与发贴数的关联 用户访问记录 选择顏色的补丁 新主題後面會顯示New的圖片 新短信提示 限制游客浏览精华和置顶...
7-8配置登录脚本 有人登录服务器给你的手机发短信05:02 第8章在企业环境部署打印机1小时7节 8-1配置打印服务器15:43 8-2连接网络打印机10:49 8-3使用组策略部署打印机09:42 8-4设置打印权限05:50 8-5设置打印机的...
、登录每次赠送金币,会员每天登录赠送金币数,系统设计一天只能赠送一次。 (5)邮件选项设置: 、邮件组件选择(不支持、JMAIL、CDONTS、ASPEMAIL),一般虚拟主机都是安装Jmail组件。用鼠标选择下拉菜单...
27、附带完整的全新安装和升级教程,只需鼠标操作,几分钟就可搭建起一个和点梦缘交友网一模一样的交友网站!28、增加同城异性会员定期推荐邮件功能,对于N(N的数值可在后台配置)天未登录的会员,可以向其邮箱发送...
11-14限制一个用户一个会话01:16 11-15介绍终端服务和终端服务 每用户 每设备许可证05:18 11-16安装终端服务02:55 11-17安装终端服务02:55 11-18终端服务 安装许可证03:47 11-19安装终端服务和TS Web访问04:10 11-20...
若选择执行单个销售方式,则销售时只能单个商品出售,不可以一次出售多个商品。若一次出售多个,则选择执行多个销售方式。当商品数量少于等于销售数量时可以进行选择提醒、直接销售、不允许销售。 临时开关灯设置是...
右键单击选中的房间号,选中“修改入住信息”,下拉房间号,选中另一房间号,完成后点击“修改入住信息并发送短信”即可办理换房。 4、办理入住登记完成,如何再次修改登记信息? 右键单击需要修改/删除的房间号,...
修复:少数情况下直播课程通知发送重复短信的问题 8.2.29(2018-5-17) 修复:少数情况下修改课程有效期功能失效的问题 修复:图文任务后台预览格式与前台显示效果不符的问题 修复:课程任务详情导出数据出错的...
版本0.308 - 允许将获取的用户数量限制为第一个返回的用户数量。从我的观察来看,最初的追随者/追随者是在一开始就返回的,因此限制产出对于获得最新的关系是有用的,特别是对于关系数量巨大的账户。如果在输入框中...