当前位置: 首页 > 后端技术 > Java

【总结】Java实现短信验证码

时间:2023-04-01 13:38:21 Java

背景Java是一种流行的编程语言,验证码是一种常用的网络安全技术。自从Java发展起来,网上就出现了各种各样的验证码。我是Java的初学者。下面是我用Java实现短信验证码的总结。截图显示代码后台从前台接收kgCaptchaToken进行验证。验证成功,处理成功。如果验证失败,则返回错误代码和信息。包com.kyger;导入jakarta.servlet.ServletException;导入jakarta.servlet.http.HttpServlet;导入jakarta.servlet.http.HttpServletRequest;导入jakarta.servlet.http.HttpServletResponse;导入java.io.IOException;导入java.util。地图;公共类演示扩展HttpServlet{privatestaticfinallongserialVersionUID=1L;公共演示(){超级();}protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)抛出ServletException,set//Encodingutf-8");response.setCharacterEncoding("utf-8");;response.setContentType("text/html;charset=utf-8");//后台处理if(request.getMethod().equals("POST")){Stringhtml,appId,appSecret,Token;//设置AppId和AppSecret,在应用管理中获取appId="appId";appSecret="appSecret";//填写你的AppId和AppSecret,在管理中获取KgCaptchaSDKKgRequest=newKgCaptchaSDK(appId,appSecret);//前端验证成功后下发的token,有效期两分钟KgRequest.token=request.getParameter("kgCaptchaToken");//System.out.print(KgRequest.token);//填写应用服务的域名,在应用管理中获取KgRequest.appCdn="https://cdn.kgcaptcha.com";//请求超时时间,秒KgRequest.connectTimeout=5;//用户登录或Try账号,安全策略中防控级别为3时必填,一般情况下可忽略。//可以填写用户输入的登录账号(如:request.getParameter("username"),可以屏蔽同一账号的多次尝试等行为KgRequest.userId="kgCaptchaDemo";//请求对象,安全策略中防控级别为3时必填,一般可忽略KgRequest.request=request;//java环境下不能提供request对象,请单独定义:clientIp|clientBrowser|domain参数,即://KgRequest.clientIp="127.0.0.1";//填写客户端IP//KgRequest.clientBrowser="";//客户端浏览器信息//KgRequest.domain="http://localhost";//您授权的域名或服务IP//发送验证请求MaprequestResult=KgRequest.sendRequest();if("0".toString().equals(requestResult.get("code"))){//签名验证成功的逻辑处理***//这里是验证通过后的数据处理//例如登录/注册场景,这里通常是查询数据库,验证密码,登录或者注册等动作处理//比如短信场景,这里可以开始给用户发送短信等动作处理//...html="";}else{//验签失败的逻辑处理html="";}response.getWriter().append(html);}else{response.sendRedirect("index.html");}}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);检测#服务端黑名单检测ifself.auth.client_blacklist():returnself.r_code(20017)#服务端黑名单#签名验证限额检测excess=self.auth.excess(2)ifexcess:returnself.r_code(code=[20020,20021,20022][excess-1])#传入域名检测ifnotself.kg["HTTP_REFERER"]:returnself.r_code(20004)#域名无效,否则无法获取传入域名self.auth.domain_auth():returnself.r_code(20005)#源域名未授权#应用有效时间检测validity=self.auth.app_validity()ifvalidity[0]==1:returnself.r_code(20006)#授权还没有开始ifvalidity[0]==2:returnself.r_code(20007)#授权已经结束ifself.auth.app_state():returnself.r_code(20008)#当前应用/域名禁用完SDK开源地址:KgCaptcha(KgCaptcha)GitHub,顺便做了个demo:Keg行为验证码在线体验