当前位置:

首页 > 编程开发 > Java如何实现短信验证码

Java如何实现短信验证码

截图展示实现代码后台接收前台的kgCaptchaToken进行验证,验证成功执行成功处理,验证失败返回错误代码及信息。packagecom.kyger;importjakarta.servlet.ServletException;importjakarta.servlet.http.HttpServlet;importjakarta.servlet.http.HttpServletRequest;importjakarta.servlet.http.HttpServletResponse;importja

本文目录

    截图展示

    Java如何实现短信验证码

    实现代码

    后台接收前台的kgCaptchaToken进行验证,验证成功执行成功处理,验证失败返回错误代码及信息。

    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;
        
        // 设置 AppId 及 AppSecret,在应用管理中获取
        appId = "appId";
        appSecret = "appSecret";
                
        // 填写你的 AppId 和 AppSecret,在应用管理中获取
        KgCaptchaSDK KgRequest = new KgCaptchaSDK(appId, appSecret);
                
        
        // 前端验证成功后颁发的 token,有效期为两分钟
        KgRequest.token = request.getParameter("kgCaptchaToken");
        // System.out.print(KgRequest.token);
        
        // 填写应用服务域名,在应用管理中获取
        KgRequest.appCdn = "https://cdn.kgcaptcha.com";
        
        // 请求超时时间,秒
        KgRequest.connectTimeout = 5;
                
        // 用户登录或尝试帐号,当安全策略中的防控等级为3时必须填写,一般情况下可以忽略
        // 可以填写用户输入的登录帐号(如:request.getParameter("username"),可拦截同一帐号多次尝试等行为
        KgRequest.userId = "kgCaptchaDemo";
                
        // request 对象,当安全策略中的防控等级为3时必须填写,一般情况下可以忽略
        KgRequest.request = request;
        // java 环境中无法提供 request 对象,请分别定义:clientIp|clientBrowser|domain 参数,即:
        // KgRequest.clientIp = "127.0.0.1";  // 填写客户端IP
        // KgRequest.clientBrowser = "";  // 客户端浏览器信息
        // KgRequest.domain = "http://localhost";  // 你的授权域名或服务IP        
                
        // 发送验证请求
        Map requestResult = KgRequest.sendRequest();
        if("0".toString().equals(requestResult.get("code"))) {
            // 验签成功逻辑处理 ***
        
            // 这里做验证通过后的数据处理
            // 如登录/注册场景,这里通常查询数据库、校验密码、进行登录或注册等动作处理
            // 如短信场景,这里可以开始向用户发送短信等动作处理
            // ...
          
            html = "";
        } else {
            // 验签失败逻辑处理
            html = "";
        }        
                
        response.getWriter().append(html);
        } else {
            response.sendRedirect("index.html");
        }        
    }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
        }
    
    }

    后端检测

    后台接收数据,同时对来源及应用进行检测。

    # 服务器黑名单检测
    if self.auth.client_blacklist():
        return self.r_code(20017)  # 服务器黑名单
    
    # 验签次数限制检测
    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)  # 来源域名未授权
    
    # 应用有效时间检测
    validity = self.auth.app_validity()
    if validity[0] == 1: return self.r_code(20006)  # 授权未开始
    if validity[0] == 2: return self.r_code(20007)  # 授权已结束
    
    if self.auth.app_state(): return self.r_code(20008)  # 当前应用/域名被禁用
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Java
    相关文章 更多
    Java单元测试入门:使用JUnit 5编写第一个测试用例
    Java单元测试入门:使用JUnit 5编写第一个测试用例

    面向初学者的JUnit 5实用入门指南。从测试概念、Maven依赖配置,到手把手编写首个单元测试用例及断言验证,助你掌握Java单元测试的核心流程。

    Java变量未初始化报错解析:局部变量与成员变量默认值差异
    Java变量未初始化报错解析:局部变量与成员变量默认值差异

    深入解析Java中局部变量未初始化编译报错与成员变量自动赋予默认值的机制差异,涵盖JVM内存分配、编译期确定性赋值检查与实际排查修复方案。

    Java获取当前时间并格式化输出:DateTimeFormatter与SimpleDateFormat
    Java获取当前时间并格式化输出:DateTimeFormatter与SimpleDateFormat

    详细讲解在Java中获取当前系统时间并进行格式化输出的两种核心方案:基于Java 8全新日期时间API的DateTimeFormatter与传统遗留的SimpleDateFormat,包含完整代码示例、线程安全机制对比及生产选型建议。

    Java中final与static final常量的定义及初始化规则
    Java中final与static final常量的定义及初始化规则

    深入解析Java中final变量与static final常量的定义、内存语义、初始化时机及合法赋值路径,涵盖编译期常量优化与实战避坑指南。

    Java抽象方法与接口方法的区别及选型建议
    Java抽象方法与接口方法的区别及选型建议

    深入对比Java中抽象类抽象方法与接口方法的语法演进、设计意图及运行期差异,并提供清晰的架构选型决策流程与实战范例。

    Java实现HTTP请求与JSON解析的完整代码示例
    Java实现HTTP请求与JSON解析的完整代码示例

    本文提供Java标准库HttpClient发起HTTP GET/POST请求并结合Jackson进行JSON数据反序列化与序列化的完整代码示例与工程实践指南。

    Java递归出现StackOverflowError的原因分析及栈空间优化方案
    Java递归出现StackOverflowError的原因分析及栈空间优化方案

    详细分析Java递归调用出现StackOverflowError的原因,结合代码说明线程栈、栈帧和递归深度之间的关系,并介绍终止条件排查、迭代改写、减少栈帧开销以及通过-Xss调整JVM栈空间的方法。

    Java空指针异常(NPE)的代码排查与修复实例
    Java空指针异常(NPE)的代码排查与修复实例

    针对Java中常见的NullPointerException(NPE),本文从堆栈日志定位、典型代码触发场景、具体修复代码对比到防御体系进行系统讲解,提供实用且易上手的排查与修复方案。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。