黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 實現(xiàn)Java手機驗證碼發(fā)送功能

實現(xiàn)Java手機驗證碼發(fā)送功能

更新時間:2022-04-19 09:32:07 來源:動力節(jié)點 瀏覽2078次

實現(xiàn)Java手機驗證碼發(fā)送功能?動力節(jié)點小編告訴大家,首先我們需要找一個提供短信服務的商戶,隨便在哪里找都一樣,購買商家的短信服務后會拿到一些參數(shù),比如說請求地址,請求方式,token等,如下圖所示:

然后找到接口的調用樣例,按照調用樣例傳相應的參數(shù)即可實現(xiàn)短信發(fā)送

這步?jīng)]什么說的,就是調用API,完成這步之后,就可以發(fā)送短信了,當然這個是第一步,距離正式完成還差很遠。

這里有一個小的細節(jié),就是我們發(fā)送短信,其中這個驗證碼是我們自己生成的,然后以參數(shù)的形式傳給接口,所以這里的驗證碼需要我們自己產(chǎn)生 貼一段產(chǎn)生驗證碼的代碼

// 僅供參考 根據(jù)業(yè)務去生成即可
    // 生成驗證碼
    StringBuilder builder = new StringBuilder();
     for (int i = 0; i < 6; i++) {
         int random = (int) (Math.random() * 10);
         builder.append(random);
     }
     String code = builder.toString();

第二步要做的操作就是要將第一步發(fā)送的驗證碼,如果發(fā)送成功了的話,我們要將該驗證碼保存起來,方便后續(xù)的驗證,這里使用了SpringBoot整合Redis,直接使用RedisTemplente實現(xiàn)的,和原生實現(xiàn)是類似的,就是將驗證碼和手機號存入Redis。

// 其中的ResultEntity是我個人封裝的一個返回結果 保存的是發(fā)送短信的結果 成功則存入Redis
// setRedisKeyValueRemoteWithTimeOut 是自己封裝的一個方法 功能為存入redis并且設置超時時間 
// 發(fā)送驗證碼到phoneNum 獲取結果
ResultEntity<String> resultEntity = CrowdUtil.sendCodeShortMessage(
        messageProperties.getHost(),
        messageProperties.getPath(),
        messageProperties.getMethod(),
        phoneNum,
        "注冊",
        messageProperties.getAppCode(),
        messageProperties.getSmsSignId(),
        messageProperties.getTemplateId());
if (ResultEntity.SUCCESS.equals(resultEntity.getResult())) {
    // 驗證碼
    String code = resultEntity.getData();
    // 設置key
    String key = CrowdConstant.REDIS_CODE_PREFIX + phoneNum;
    // 如果成功則將驗證碼存入Redis 過期時間300秒 獲取存入redis的結果
    ResultEntity<String> saveCodeResultEntity = redisRemoteService.setRedisKeyValueRemoteWithTimeOut(key, code, 300, TimeUnit.SECONDS);
    if (ResultEntity.SUCCESS.equals(saveCodeResultEntity.getResult())) {
        return ResultEntity.successWithoutData();
    } else {
        return saveCodeResultEntity;
    }

第三步實現(xiàn)短信驗證碼的驗證

這步驟實現(xiàn)的功能就是驗證短信驗證碼是否匹配,這步驟核心操作就是將驗證碼從Redis中取出來,和前端傳過來的數(shù)據(jù)進行比對,貼代碼

// 可以無視其中的一些拼接操作,這些拼接操作就是做一下標識,作為key。
// 核心是getRedisStringValueByKeyRemote方法 作用為獲取Redis中的驗證碼
// 這里有一個注意事項就是驗證碼使用過一次后需要刪除redis中的數(shù)據(jù),避免二次驗證造成的數(shù)據(jù)不安全。
// 獲取手機號
String phoneNum = memberVO.getCardnum();
// 拼接redis中的key
String key = CrowdConstant.REDIS_CODE_PREFIX + phoneNum;
// 根據(jù)key查詢redis 返回resultEntity 將value存入data
ResultEntity<String> redisResultEntity = redisRemoteService.getRedisStringValueByKeyRemote(key);
// 獲取結果集
String result = redisResultEntity.getResult(); 
if (ResultEntity.FAILED.equals(result)) {
    modelMap.addAttribute(CrowdConstant.ATTR_NAME_MESSAGE, redisResultEntity.getMessage());
    return "member-reg";
}
// 獲取redis的驗證碼
String redisCode = redisResultEntity.getData(); 
if (redisCode == null) {
    modelMap.addAttribute(CrowdConstant.ATTR_NAME_MESSAGE, CrowdConstant.MESSAGE_CODE_NOT_EXISTS);
    return "member-reg";
}
// 獲取輸入的驗證碼
String code = memberVO.getCode();
if (!Objects.equals(redisCode, code)) {
    modelMap.addAttribute(CrowdConstant.ATTR_NAME_MESSAGE, CrowdConstant.MESSAGE_CODE_FAILED);
    return "member-reg";
}
// 刪除redis中數(shù)據(jù)
redisRemoteService.removeRedisKeyRemote(key);

到這里我們驗證碼幾乎就結束了,已經(jīng)實現(xiàn)了流程,由于我的那個驗證碼套餐過期了,本人又十分貧窮,就沒有測試樣例啦,但是保證是可用的,前端調用方式直接一個Ajax請求調用發(fā)送驗證碼存儲redis,然后在例如測試或登錄的業(yè)務中,去匹配驗證碼即可。接下來給幾點拓展,各位可以自己實現(xiàn)

實現(xiàn)控制單手機號一天只能發(fā)送三條消息。

實現(xiàn)控制單ip一天只能發(fā)送是三條消息

實現(xiàn)消息60秒不能重復發(fā)送

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美日韩国 | 国产1区2区在线观看 | 亚洲欧美日韩一区二区在线观看 | 男女扒开双腿猛进入免费看污 | 亚洲一区浅井舞香在线播放 | 99精品在线免费观看 | 日本草草 | 人人公开免费超级碰碰碰视频 | 被多人强伦的小柔小说片段 | 一级黄色免费网站 | 韩国理伦在线 | 九九九热在线精品免费全部 | 欧美另类日韩中文色综合 | 欧美成人免费全部观看天天性色 | 亚洲天天在线日亚洲洲精 | 欧美一级黄视频 | 久热操 | 77788色淫免费网站视频 | 国产精品久久久久精 | 午夜刺激爽爽视频免费观看 | 北条麻妃在线一区二区 | 一本久道久久综合中文字幕 | 国产成人a在一区线观看高清 | 欧美一区二区三区在线观看不卡 | 亚洲一区二区三区高清 不卡 | 中日韩精品视频在线观看 | 日韩高清第一页 | 国产片a | 天天操2023 | 国产亚洲精品激情都市 | 成年片免费网址网站 | 亚洲免费视频观看 | 日韩美毛片 | 18性夜影院午夜寂寞影院免费 | 全免费午夜一级毛片一级毛 | 亚洲国产日韩在线观看 | 久久五月激情婷婷日韩 | 禁视频网站在线观看漫画 | 国产91免费| 免费看黄无遮挡滚床单视频 | 国产伦久视频免费观看视频 |