影片直播系統原始碼,java 隨機驗證碼 、10 分鐘有效
影片直播系統原始碼,java 隨機驗證碼 、10 分鐘有效
1.首先建立一個vo類存放我們驗證碼相關資訊。
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.Date; /** * @Author Lxq * @Date 2020/12/7 17:30 * @Version 1.0 * <p> * 存放驗證碼相關內容,這個物件是放在redis中 */ @Data @NoArgsConstructor @AllArgsConstructor public class VerifyCodeVO implements Serializable { /** * 驗證碼 */ private Integer verifyCode; /** * 傳送驗證碼的手機號 */ private String phoneNumber; /** * 最近成功傳送時間 */ private Date lastSendTime; /** * 可用次數 */ private Integer availableTimes; }
2.當前時間與晚上十二點的秒差
/** * 當前時間與晚上十二點的秒差 * * @return */ private Long nowTo12ClockTime() { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_YEAR, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.MILLISECOND, 0); //當前時間與晚上十二點的秒差 return (calendar.getTimeInMillis() - System.currentTimeMillis()) / 1000; }
3.傳送驗證碼的具體方法
@Override public void sendVerificationCode(String phoneNumber) { if (phoneNumber == null) { throw new CustomException("手機號碼不能為空!"); } // 從redis中獲取手機號碼對應物件資訊 VerifyCodeVO verifyCodeVO = redisUtils.get(phoneNumber, VerifyCodeVO.class); if (verifyCodeVO != null) { long lastSendTime = verifyCodeVO.getLastSendTime().getTime(); long now = System.currentTimeMillis(); if ((now - lastSendTime) / 1000 < 60) { throw new CustomException("請不要頻繁獲取驗證碼!"); } Integer availableTimes = verifyCodeVO.getAvailableTimes(); if (availableTimes.equals(0)) { throw new CustomException("今日驗證碼次數已使用完畢!"); } // 次數減一 verifyCodeVO.setAvailableTimes(verifyCodeVO.getAvailableTimes() - 1); // 重新生成新驗證碼 int random = (int) ((Math.random() * 9 + 1) * 100000); verifyCodeVO.setVerifyCode(random); verifyCodeVO.setLastSendTime(new Date()); redisUtils.set(phoneNumber, verifyCodeVO, nowTo12ClockTime()); // 非同步傳送簡訊 String id = ArpSmsTemplateEnum.APP_DATA_VERIFICATION_CODE.getId(); Integer parameters = ArpSmsTemplateEnum.APP_DATA_VERIFICATION_CODE.getParameters(); AsyncManager.me().ttlExecute(AsyncMessageFactory.sendBusinessSms(id, new String[]{"+86" + phoneNumber}, new String[]{String.valueOf(random)}, parameters)); } else { int random = (int) ((Math.random() * 9 + 1) * 100000); VerifyCodeVO vc = new VerifyCodeVO(); vc.setPhoneNumber(phoneNumber); vc.setVerifyCode(random); vc.setLastSendTime(new Date()); vc.setAvailableTimes(9); redisUtils.set(phoneNumber, vc, nowTo12ClockTime()); // 模板ID String id = ArpSmsTemplateEnum.APP_DATA_VERIFICATION_CODE.getId(); Integer parameters = ArpSmsTemplateEnum.APP_DATA_VERIFICATION_CODE.getParameters(); AsyncManager.me().ttlExecute(AsyncMessageFactory.sendBusinessSms(id, new String[]{"+86" + phoneNumber}, new String[]{String.valueOf(random)}, parameters)); } }
備註:簡訊介面是呼叫騰訊雲介面,自行解決
4.接收驗證碼介面
@Override public Integer getVerificationCode(String phoneNumber) { VerifyCodeVO verifyCodeVO = redisUtils.get(phoneNumber, VerifyCodeVO.class); if (verifyCodeVO == null) { throw new CustomException("請先獲取手機驗證碼!"); } long currentTimeMillis = System.currentTimeMillis(); long lastTime = verifyCodeVO.getLastSendTime().getTime(); // 10 分鐘有效期 if ((lastTime + (10 * 60 * 1000)) < currentTimeMillis) { throw new CustomException("驗證碼已過期,請重新獲取!"); } return verifyCodeVO.getVerifyCode(); }
以上就是影片直播系統原始碼,java 隨機驗證碼 、10 分鐘有效, 更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2937587/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 影片直播系統原始碼,vue中captcha.js生成驗證碼原始碼VueAPTJS
- 影片直播app原始碼,傳送驗證碼 驗證碼識別APP原始碼
- 短視訊直播系統,接收到產生驗證碼請求時隨機生成驗證碼隨機
- 影片直播原始碼,前端canvas動態驗證碼實現原始碼前端Canvas
- 隨機驗證碼隨機
- 影片直播app原始碼,姓名,身份證input驗證過濾APP原始碼
- 直播系統原始碼,選擇驗證方式時選擇郵箱驗證原始碼
- 影片直播系統原始碼,例項原始碼系列-設定系統時間原始碼
- 直播系統app原始碼,shiro簡單的密碼加鹽與密碼驗證APP原始碼密碼
- 如何用機器學習在15分鐘內破解網站驗證碼系統?機器學習網站
- 影片直播系統原始碼,java中Map遍歷的三種方式原始碼Java
- 直播app系統原始碼,flutter 驗證碼輸入框的簡單封裝APP原始碼Flutter封裝
- 直播系統app原始碼,自定義九宮格,計算器佈局,驗證碼認證APP原始碼
- 十位隨機驗證碼隨機
- 應用:隨機生成驗證碼隨機
- 影片直播系統原始碼,EditText輸入框的使用原始碼
- 10分鐘剖析Android原始碼——序Android原始碼
- 直播商城原始碼,驗證方式之一,滑塊驗證原始碼
- 影片直播系統原始碼,非同步處理實現程式碼分析原始碼非同步
- 手機直播原始碼,驗證碼自動讀秒倒數計時原始碼
- 線上直播原始碼,通過手機號簡訊接收驗證碼原始碼
- java視窗登入介面實現隨機驗證碼Java隨機
- app直播原始碼,登入時輸入驗證碼、簡訊驗證身份APP原始碼
- JavaScript隨機五位數驗證碼JavaScript隨機
- 一對一聊天原始碼,驗證碼生成隨機數字排列組合原始碼隨機
- 影片直播系統原始碼,自定義背景和狀態管理原始碼
- 影片直播系統原始碼,Android 讀取聯絡人列表原始碼Android
- 影片直播系統原始碼,flutter Wrap 自動換行元件原始碼Flutter元件
- 直播系統原始碼,利用重試機制保證服務穩定性原始碼
- 語音直播系統原始碼與視訊直播系統原始碼哪些區別原始碼
- 直播平臺原始碼,簡訊驗證碼傳送demo原始碼
- 直播商城原始碼,記一次 js隨機密碼原始碼JS隨機密碼
- 影片直播系統原始碼,Android EditText不顯示提示文字hint原始碼Android
- Java高精度定位系統原始碼 UWB定位系統原始碼 定位系統原始碼Java原始碼
- app直播原始碼,uniapp隨機數生成簽名APP原始碼隨機
- 直播平臺原始碼,JavaScript表單驗證密碼強度原始碼JavaScript密碼
- 手機直播原始碼,Android Studio使用者登入及驗證原始碼Android
- Java之生成一個隨機驗證碼(數字+大小寫字母)Java隨機