Java實現(xiàn)短信驗證碼的示例代碼
背景
Java是一種流行的編程語言,驗證碼是一種常用的網(wǎng)絡(luò)安全技術(shù)。Java發(fā)展至今,網(wǎng)上也出現(xiàn)了各種各樣的驗證碼,本人初學Java,下面是我用Java實現(xiàn)短信驗證碼的總結(jié)。
截圖展示

實現(xiàn)代碼
后臺接收前臺的kgCaptchaToken進行驗證,驗證成功執(zhí)行成功處理,驗證失敗返回錯誤代碼及信息。
package com.kyger;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
public class demo extends HttpServlet {
private static final long serialVersionUID = 1L;
public demo() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 編碼
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");;
response.setContentType("text/html; charset=utf-8");
// 后臺處理
if (request.getMethod().equals("POST")){
String html, appId, appSecret, Token;
// 設(shè)置 AppId 及 AppSecret,在應(yīng)用管理中獲取
appId = "appId";
appSecret = "appSecret";
// 填寫你的 AppId 和 AppSecret,在應(yīng)用管理中獲取
KgCaptchaSDK KgRequest = new KgCaptchaSDK(appId, appSecret);
// 前端驗證成功后頒發(fā)的 token,有效期為兩分鐘
KgRequest.token = request.getParameter("kgCaptchaToken");
// System.out.print(KgRequest.token);
// 填寫應(yīng)用服務(wù)域名,在應(yīng)用管理中獲取
KgRequest.appCdn = "https://cdn.kgcaptcha.com";
// 請求超時時間,秒
KgRequest.connectTimeout = 5;
// 用戶登錄或嘗試帳號,當安全策略中的防控等級為3時必須填寫,一般情況下可以忽略
// 可以填寫用戶輸入的登錄帳號(如:request.getParameter("username"),可攔截同一帳號多次嘗試等行為
KgRequest.userId = "kgCaptchaDemo";
// request 對象,當安全策略中的防控等級為3時必須填寫,一般情況下可以忽略
KgRequest.request = request;
// java 環(huán)境中無法提供 request 對象,請分別定義:clientIp|clientBrowser|domain 參數(shù),即:
// KgRequest.clientIp = "127.0.0.1"; // 填寫客戶端IP
// KgRequest.clientBrowser = ""; // 客戶端瀏覽器信息
// KgRequest.domain = "http://localhost"; // 你的授權(quán)域名或服務(wù)IP
// 發(fā)送驗證請求
Map<String, String> requestResult = KgRequest.sendRequest();
if("0".toString().equals(requestResult.get("code"))) {
// 驗簽成功邏輯處理 ***
// 這里做驗證通過后的數(shù)據(jù)處理
// 如登錄/注冊場景,這里通常查詢數(shù)據(jù)庫、校驗密碼、進行登錄或注冊等動作處理
// 如短信場景,這里可以開始向用戶發(fā)送短信等動作處理
// ...
html = "<script>alert('驗證通過');history.back();</script>";
} else {
// 驗簽失敗邏輯處理
html = "<script>alert(\"" + requestResult.get("msg") + " - " + requestResult.get("code") + "\");history.back();</script>";
}
response.getWriter().append(html);
} else {
response.sendRedirect("index.html");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}后端檢測
后臺接收數(shù)據(jù),同時對來源及應(yīng)用進行檢測。
# 服務(wù)器黑名單檢測
if self.auth.client_blacklist():
return self.r_code(20017) # 服務(wù)器黑名單
# 驗簽次數(shù)限制檢測
excess = self.auth.excess(2)
if excess:
return self.r_code(code=[20020, 20021, 20022][excess - 1])
# 來路域名檢測
if not self.kg["HTTP_REFERER"]: return self.r_code(20004) # 域名不合法,無法獲取來路域名
if not self.auth.domain_auth(): return self.r_code(20005) # 來源域名未授權(quán)
# 應(yīng)用有效時間檢測
validity = self.auth.app_validity()
if validity[0] == 1: return self.r_code(20006) # 授權(quán)未開始
if validity[0] == 2: return self.r_code(20007) # 授權(quán)已結(jié)束
if self.auth.app_state(): return self.r_code(20008) # 當前應(yīng)用/域名被禁用到此這篇關(guān)于Java實現(xiàn)短信驗證碼的示例代碼的文章就介紹到這了,更多相關(guān)Java短信驗證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring定時任務(wù)中@PostConstruct被多次執(zhí)行異常的分析與解決
這篇文章主要給大家介紹了關(guān)于Spring定時任務(wù)中@PostConstruct被多次執(zhí)行異常的分析與解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-10-10
MybatisPlus?自定義插件實現(xiàn)攔截SQL修改功能(實例詳解)
這篇文章主要介紹了MybatisPlus?自定義插件實現(xiàn)攔截SQL修改功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11
Spring Boot + Mybatis多數(shù)據(jù)源和動態(tài)數(shù)據(jù)源配置方法
最近做項目遇到這樣的應(yīng)用場景,項目需要同時連接兩個不同的數(shù)據(jù)庫A, B,并且它們都為主從架構(gòu),一臺寫庫,多臺讀庫。下面小編給大家?guī)砹薙pring Boot + Mybatis多數(shù)據(jù)源和動態(tài)數(shù)據(jù)源配置方法,需要的朋友參考下吧2018-01-01
MyBatis Plus關(guān)閉SQL日志打印的方法
這篇文章主要介紹了MyBatis-Plus如何關(guān)閉SQL日志打印,文中通過圖文結(jié)合講解的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2024-02-02
Java實現(xiàn)讀取鍵盤輸入保存到txt文件,再統(tǒng)計并輸出每個單詞出現(xiàn)次數(shù)的方法
這篇文章主要介紹了Java實現(xiàn)讀取鍵盤輸入保存到txt文件,再統(tǒng)計并輸出每個單詞出現(xiàn)次數(shù)的方法,涉及java文件I/O操作及字符串遍歷、運算實現(xiàn)統(tǒng)計功能相關(guān)技巧,需要的朋友可以參考下2017-07-07

