首页 > 编程语言 >短视频开发,如何用Java实现短信验证码?

短视频开发,如何用Java实现短信验证码?

时间:2024-04-28 09:00:11浏览次数:26  
标签:code 短信 self request 验证码 return Java KgRequest

背景

Java是一种短视频开发时比较流行的编程语言,验证码是一种常用的网络安全技术。Java发展至今,网上也出现了各种各样的验证码,本人初学Java,下面是我用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<String, String> requestResult = KgRequest.sendRequest();
    if("0".toString().equals(requestResult.get("code"))) {
        // 验签成功逻辑处理 ***
    
        // 这里做验证通过后的数据处理
        // 如登录/注册场景,这里通常查询数据库、校验密码、进行登录或注册等动作处理
        // 如短信场景,这里可以开始向用户发送短信等动作处理
        // ...
      
        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);
    }

}

 

后端检测

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

# 服务器黑名单检测
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)  # 当前应用/域名被禁用

 

以上就是短视频开发,如何用Java实现短信验证码?, 更多内容欢迎关注之后的文章

 

标签:code,短信,self,request,验证码,return,Java,KgRequest
From: https://www.cnblogs.com/yunbaomengnan/p/18162961

相关文章

  • [Java]线程生命周期与线程通信
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18162522出自【进步*于辰的博客】线程生命周期与进程有诸多相似,所以我们很容易将两者关联理解并混淆,一些细节之处确有许多不同,因为线程调度与进程调度虽都由CPU完成,但两者并......
  • Java 多线程初步总结
    Java多线程程序,进程,线程的基本概念:程序:是为了完成特定的任务,使用某种语言编写的一组指令的集合,是一段静态的代码,静态对象,如Excel,World等。进程:是程序的一次执行多次,或者是正在运行的一个程序,是一个动态的过程,有自身的产生,存在和消亡的过程,即存在生命周期。线程:进程可以进一步......
  • java中的内部类
    java中的内部类目录java中的内部类1.定义2.分类非静态成员式的内部类局部内部类匿名内部类静态成员式内部类总结1.定义内部类是一个定义在另一个类中的类内部类可以把一些数据统一的隐藏起来,从而增强面向对象的封装性2.分类非静态成员式的内部类非静态成员式内部类可......
  • Java(3)-POJO和Java bean的区别是什么
    POJO(PlainOldJavaObject)和JavaBean是两个密切相关但有细微差别的概念,在Java编程中经常被提及。这两者之间的主要区别在于它们的用途和设计要求。首先简单地介绍POJO是什么,POJO是"PlainOldJavaObject"的缩写,指的是一个普通的Java对象,它不依赖于特定的Java框架,也......
  • 在html中应用JavaScript
    1.在html中调用jsjs需要用<script>脚本写入位置</script>声明;也可以用外部文件引入,如<scripttype="text/javascript"src="script1.js"></script>。当js位于html的<head>内:这些脚本在选择触发它的时候被触发当js位于html的<body>内:这些脚本在页面加载时触发2.js的数据类......
  • Java(1)-粗解动态绑定
    Java的动态绑定机制是OOP中一个非常核心的概念。要理解动态绑定需要从Java的对象和类说起。当我们在创建一个类的时候,实际上就是在定义一种新的数据类型。类中可以包含属性和方法,基于这个类创建一个对象的时候,这个对象就有拥有该类所有的属性和方法。在引出动态绑定的概念之前,可......
  • Java(2)-粗解类加载器
    Java的类加载器是Java运行时环境中的重要组件,核心功能是将类的字节码加载到Java虚拟机中。举个例子可以通过一个图书馆的比喻来形象地解释类加载器的作用、用法和使用场景。想象一下,有一个巨大的图书馆(JVM),其中有非常多的藏书(类)。当你(程序)需要阅读一本书(使用一个类)时,你首先需要......
  • 学习笔记-Java内存区域
    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外的人想进去,墙里面的人想出来。运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间。有的区域随着虚拟机进程启动一直......
  • 【Java】java1.8安装教程及java环境配置
    一、下载JDK源文件1、根据自己系统,下载对应的文件下载地址:Java存档下载-JavaSE8u211及更高版本|Oracle中国 2、下载后,可将安装包移动到自定义目录中,然后双击文件进行安装操作 二、安装1、双击安装文件,根据安装向导指引,点击下一步,进行安装 2、点击下一步后,根......
  • java发送http请求
    privatevoidhandleCartItems(List<CartVO>vos){//1.获取商品idSet<Long>itemIds=vos.stream().map(CartVO::getItemId).collect(Collectors.toSet());//2.查询商品ResponseEntity<List<ItemDTO>>response......