在我們生活中,使用的各種各樣的網站、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("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-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();
}
}
````
-
可以根據自己的需求決定怎么存儲驗證碼
-
用戶輸入驗證碼后,將用戶輸入的和自己存儲的進行比較,看是否相同