资讯专栏INFORMATION COLUMN

如何在Web项目完成短信验证码

Scorpion / 2639人阅读

摘要:在做远程智能水表管理系统这个过程有一个功能是在注册页面可以使用手机注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下。这个是将数据和短信服务平台的网址进行绑定,即该提交数据交付哪个平台进行处理。

在做远程智能水表管理系统这个过程有一个功能是在注册页面可以使用手机注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下。

短信验证码实现流程

1、构造手机验证码:使用random对象生成要求的随机数作为验证码,例如4位验证码:1000~9999之间随机数;
2、使用接口向短信平台发送手机号和验证码数据,然后短信平台再把验证码发送到制定手机号上,接口参数一般包括:目标手机号,随机验证码(或包含失效时间),平台接口地址,平台口令;
3、保存接口返回的信息(一般为json文本数据,然后需转换为json对象格式);
4、将手机号--验证码、操作时间存入Session中,作为后面验证使用;
5、接收用户填写的验证码及其他数据;
6、对比提交的验证码与Session中的验证码是否一致,同时判断提交动作是否在有效期内;
7、验证码正确且在有效期内,请求通过,处理相应的业务。

今天我们就前4步进行实现:

为了简化流程,我们在就使用固定手机验证码而不采用随机产生的数作为验证码
在此我们有一个前端页面一个后台逻辑处理页面,下面就该两项进行简单说明:

前端页面

</>复制代码

  1. <%
  2. Send send = new Send();
  3. String PostData = "account=JamesXT&password=18770918982lkx&mobile=18770918982&content="+java.net.URLEncoder.encode("您的订单编码:4557。如需帮助请联系客服。","utf-8");
  4. //out.println(PostData);
  5. String ret = Send.SMS(PostData, "http://sms.106jiekou.com/utf8/sms.aspx");
  6. out.println(ret);
  7. //请自己反序列化返回的字符串并实现自己的逻辑
  8. %>

PostData:就是想短信服务平台提交的待处理的数据,它一般包括短信服务平台注册者的用户账号名,密码,以及你想向谁发送短信验证码以及短信验证码所属信息的完整内容。

</>复制代码

  1. String ret = Send.SMS(PostData, "http://sms.106jiekou.com/utf8/sms.aspx");
  2. 这个是将数据和短信服务平台的网址进行绑定,即该提交数据交付哪个平台进行处理。
后台逻辑处理类:

</>复制代码

  1. public class Send {
  2. //SMS方法中有两个参数,这个参数是由前台页面提交的PostData和前者绑定的短信服务地址确定的
  3. public static String SMS(String postData, String postUrl) {
  4. try {
  5. //发送POST请求
  6. URL url = new URL(postUrl);
  7. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  8. conn.setRequestMethod("POST");
  9. conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  10. conn.setRequestProperty("Connection", "Keep-Alive");
  11. conn.setUseCaches(false);
  12. conn.setDoOutput(true);
  13. conn.setRequestProperty("Content-Length", "" + postData.length());
  14. OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
  15. //将前台提交的数据放入输出流中,即向短信服务平台发送该条业务请求
  16. out.write(postData);
  17. out.flush();
  18. out.close();
  19. //获取响应状态码
  20. if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
  21. System.out.println("connect failed!");
  22. return "";
  23. }
  24. //获取响应内容
  25. String line, result = "";
  26. BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
  27. while ((line = in.readLine()) != null) {
  28. result += line + "
  29. ";
  30. }
  31. in.close();
  32. return result;
  33. } catch (IOException e) {
  34. e.printStackTrace(System.out);
  35. }
  36. return "";
  37. }
  38. }

最后附上Demo源码地址:链接:https://pan.baidu.com/s/1bYwLpc 密码:8lfr
本demo所用短信服务商地址为:http://www.106jiekou.com/memb...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70731.html

相关文章

  • 如何Web项目完成短信验证

    摘要:在做远程智能水表管理系统这个过程有一个功能是在注册页面可以使用手机注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下。这个是将数据和短信服务平台的网址进行绑定,即该提交数据交付哪个平台进行处理。 在做远程智能水表管理系统这个过程有一个功能是在注册页面可以使用手机注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下。 短信验证码实现流程 1、构造手机验证...

    baihe 评论0 收藏0
  • 如何Web项目完成短信验证

    摘要:在做远程智能水表管理系统这个过程有一个功能是在注册页面可以使用手机注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下。这个是将数据和短信服务平台的网址进行绑定,即该提交数据交付哪个平台进行处理。 在做远程智能水表管理系统这个过程有一个功能是在注册页面可以使用手机注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下。 短信验证码实现流程 1、构造手机验证...

    shiguibiao 评论0 收藏0
  • 当我们谈论验证时,我们到底谈论什么?

    摘要:在次失败后,第四次请求,就返回错误文案验证码连续错误三次,请重新获取短信验证码还有一个需要思考的维度。一般来说,短信验证码会有分钟的有效期。 前言: 现如今登录用手机验证码登录是越来越常见了。虽然会增加成本,不过对用户体验的提升还是很有帮助的。那么,当产品经理对开发说,来按照这个原型给我搞个短信验证码登录的时候。我们作为研发,应该想些什么?showImg(https://upload-...

    妤锋シ 评论0 收藏0
  • Laravel SMS 短信发送包

    摘要:支持短信验证码未验证时,用户再次请求验证码,在有效分钟内验证码保持一致。集成短信发送路由,支持和发送方式。有效期为分钟,请尽快验证。 Laravel Sms Laravel 贴合实际需求同时满足多种通道的短信发送组件 showImg(https://segmentfault.com/img/remote/1460000013101233);showImg(https://segment...

    Seay 评论0 收藏0
  • 如何不花钱实现简单的短信验证功能

    摘要:相信有很多朋友在做三方登陆的时候会加入短信验证的功能,最近刚好被分配安排实现这一需求,本人新手一枚,特地去网上搜了资料,目前用的比较多的大汉云通讯还有的。 相信有很多朋友在做三方登陆的时候会加入短信验证的功能,最近刚好被分配安排实现这一需求,本人新手一枚,特地去网上搜了资料,目前用的比较多的大汉、云通讯还有MobTech的SMSSDK。对比之下,最终选择了完全免费的SMSSDK打算小试...

    tangr206 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<