在我们生活中,使用的各种各样的网站、APP在登录、注册、支付、修改密码等需要进行安全验证的地方都要进行短信的验证。
一、实现思路:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
二、流程
客户输入手机号后,点击发送验证码,向服务器发送请求服务器接收到请求后,获取到客户的手机号,并随机生成验证码,将验证码存储起来,有了手机号和验证码,向运营商发起发送短信的请求运营商向客户手机发送短信客户将收到接收到的验证码填写之后,点击提交,向服务器发起请求,判断发送的和客户输入的是否相同。三、实现
阿里云、腾讯云、华为云…很多平台都提供有短信服务
我们登陆阿里云平台可以直接搜索短信服务
在这里我们选择国内短信,然后需要添加签名
输入签名名称,签名为发送的验证码的前缀,场景选择验证码,但是验证码这里个人用户只能申请一次。上传需要的东西,填写申请说明,等待审核就行了
接下来需要添加模板,选择验证码,然后根据要求填写要求的内容,提交等待审核即可
因为发送短信并不是免费的,需要保证你的账号里有余额。
在快速学习中,点击查看API Demo
填入信息,点击发起调用即可进行测试
测试成功的话, 后面我们只需要将示例代码复制到我们的程序程序代码中即可
我们首先需要在maven项目中引入阿里云的sdk
<!-- 阿里云sdk --><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.4.6</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-ecs</artifactId><version>4.17.6</version></dependency>
将代码复制到程序中,这两个参数是需要自己填写的,我们点击 AccessKey 管理可以创建自己的 AccessKey ,将申请的填写在自己的程序代码中即可
public void sendCode(String phone, Users users){String accessKeyId="";String accessSecret="";//<accessKeyId>", "<accessSecret>DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessSecret);IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain("");request.setSysVersion("-05-25");request.setSysAction("SendSms");request.putQueryParameter("RegionId", "cn-hangzhou");request.putQueryParameter("PhoneNumbers", phone);request.putQueryParameter("SignName", "***");request.putQueryParameter("TemplateCode", "*******");//随机生成验证码String verifyCode = String.valueOf(new Random().nextInt(899999) + 100000);//生成短信验证码request.putQueryParameter("TemplateParam", "{\"code\":"+verifyCode+"}");try {CommonResponse response = client.getCommonResponse(request);System.out.println(response.getData());} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}}
可以根据自己的需求决定怎么存储验证码
用户输入验证码后,将用户输入的和自己存储的进行比较,看是否相同
如果觉得《java使用阿里云平台实现发送短信验证码功能》对你有帮助,请点赞、收藏,并留下你的观点哦!