今日在写项目时,注册登录功能沿用了邮箱验证,已经几个项目都使用邮箱验证,感觉有点弱,加上进来几乎所有应用都有短信验证码的功能,感觉需要掌握这个方法
- 选择第三方服务商
应该有很多厂商都提供了短信服务,我使用的是榛子云(传送门),其他的话流程应该差不多
注册,登录 - 依次点击应用管理,我的应用,可以查看到AppId,和AppSecret,这两个值在后面会用到
- 导入jar包或maven坐标
这一步直接看官方的文档就行(传送门) - 实现业务逻辑
如使用项目的界面 - 在输入手机号,点击发送验证码后将手机号发送给后台处理
@RequestMapping("/sendSms")
public @ResponseBody Map<String,String> sendSms(@RequestBody String phoneNumber, HttpServletRequest request) throws Exception {
Map<String,String> res = new HashMap<String, String>();
//生成随机验证码4位
String captcha = RandomStringUtils.random(4,false,true);
//发送到注册手机
ZhenziSmsClient client = new ZhenziSmsClient("https://sms_developer.zhenzikj.com", "105254", "60b64026-9aaa-4459-83f3-0aaad82383d3");
String result = client.send(phoneNumber, "验证码: " + captcha + ",你正在注册喜瑞斯账号,验证码在5分钟内有效");
System.out.println(result);
//验证码存入session
request.getSession().setAttribute("captcha",captcha);
//返回结果
res.put("type","success");
res.put("msg","发送成功");
return res;
}
对ZhenziSmsClient的三个参数简单说明
apiUrl:https://sms_developer.zhenzikj.com //个人用户使用这个url就行
appId:105551 //替换为你的appid
appSecret:60b64026-9aaa-4459-83f3-0aafd81383d3 //替换为你的appSercet
具备基本开发经验的话应该理解这段代码的问题不大
点击后
再点击注册后再将输入的验证码与session域里的验证码比较即可,注意验证成功后将session域里的验证码删除掉
这里需要注意开发者测试的话短信的署名只能是榛子云体验,企业的话可以使用企业的名称
大概三秒左右就能收到短信,速度还可以
- 既然使用了短信验证注册,再登录时也可以选择短信验证登录和传统的账号密码登录
业务逻辑就不在此过多叙述