java使用阿里雲平台實現發送短信驗證碼功能


在我們生活中,使用的各種各樣的網站、APP在登錄、注冊、支付、修改密碼等需要進行安全驗證的地方都要進行短信的驗證。

一、實現思路:

二、流程
  1. 客戶輸入手機號后,點擊發送驗證碼,向服務器發送請求
  2. 服務器接收到請求后,獲取到客戶的手機號,並隨機生成驗證碼,將驗證碼存儲起來,有了手機號和驗證碼,向運營商發起發送短信的請求
  3. 運營商向客戶手機發送短信
  4. 客戶將收到接收到的驗證碼填寫之后,點擊提交,向服務器發起請求,判斷發送的和客戶輸入的是否相同。
三、實現

阿里雲、騰訊雲、華為雲......很多平台都提供有短信服務

  1. 我們登陸阿里雲平台可以直接搜索短信服務

  1. 在這里我們選擇國內短信,然后需要添加簽名

  2. 輸入簽名名稱,簽名為發送的驗證碼的前綴,場景選擇驗證碼,但是驗證碼這里個人用戶只能申請一次。上傳需要的東西,填寫申請說明,等待審核就行了


  1. 接下來需要添加模板,選擇驗證碼,然后根據要求填寫要求的內容,提交等待審核即可

  1. 因為發送短信並不是免費的,需要保證你的賬號里有余額。

  2. 在快速學習中,點擊查看API Demo

  3. 填入信息,點擊發起調用即可進行測試

  1. 測試成功的話, 后面我們只需要將示例代碼復制到我們的程序程序代碼中即可

  2. 我們首先需要在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>
    
  3. 將代碼復制到程序中,這兩個參數是需要自己填寫的,我們點擊 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();
        }
    }
````
  1. 可以根據自己的需求決定怎么存儲驗證碼

  2. 用戶輸入驗證碼后,將用戶輸入的和自己存儲的進行比較,看是否相同


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM