MVC使用极验验证制作登录验证码学习笔记7

下面是“MVC使用极验验证制作登录验证码学习笔记7”的完整攻略。

1. 简介

本文将以MVC模式为基础,介绍如何使用极验验证制作登录验证码。

2. 准备工作

在开始使用极验验证之前,需要先注册一个极验账号,并创建一个验证实例。具体步骤如下:

  1. 进入极验验证官方网站,点击“注册”按钮,填写相关信息,完成注册流程;
  2. 登录账号后,进入“验证管理”页面,创建一个验证实例;
  3. 在实例设置页面,记录下“公钥”和“私钥”的值,用于后续操作。

3. 实现过程

3.1 添加依赖

在MVC模式下,使用极验验证需要添加官方提供的Java SDK依赖。在pom.xml文件中添加如下配置即可:

<dependency>
  <groupId>com.geetest.sdk</groupId>
  <artifactId>gt3-sdk</artifactId>
  <version>3.0.0</version>
</dependency>

3.2 前端代码实现

在前端页面中,需要引入极验提供的Javascript SDK,并在页面加载时初始化验证码。代码示例:

<!DOCTYPE html>
<html>
<head>
  <title>登录页面</title>
  <script type="text/javascript" src="https://static.geetest.com/static/tools/gt.js"></script>
  <script type="text/javascript">
    var handler = function (captchaObj) {
      //TODO
    };

    window.initGeetest({
      gt: "{{ geetest.gt }}",
      challenge: "{{ geetest.challenge }}",
      new_captcha: "{{ geetest.new_captcha }}",
      product: "popup",
      width: "300px"
    }, handler);
  </script>
</head>
<body>
  <form action="/login" method="post">
    <label for="username">用户名:</label>
    <input type="text" name="username" id="username" required><br>
    <label for="password">密码:</label>
    <input type="password" name="password" id="password" required><br>
    <div id="captcha"></div>
    <button type="submit">登录</button>
  </form>
</body>
</html>

在上面的代码中,{{ geetest.gt }}{{ geetest.challenge }}{{ geetest.new_captcha }}是从服务器端动态生成的验证参数,用于初始化验证码。

3.3 后端代码实现

在后端代码中,需要使用极验提供的Java SDK库,验证用户提交的验证码。代码示例:

@Controller
public class LoginController {

  @Autowired
  private GeetestConfig geetestConfig;

  @PostMapping("/login")
  public String login(@RequestParam String username, @RequestParam String password, HttpServletRequest request) {
    // 构造极验验证对象
    GeetestLib gtSdk = new GeetestLib(geetestConfig.getGeetestId(), geetestConfig.getGeetestKey());

    // 获取请求参数
    String challenge = request.getParameter(GeetestLib.GEETEST_CHALLENGE);
    String validate = request.getParameter(GeetestLib.GEETEST_VALIDATE);
    String seccode = request.getParameter(GeetestLib.GEETEST_SECCODE);
    Boolean result = false;

    // 校验极验验证结果
    if (challenge != null && validate != null && seccode != null) {
      result = gtSdk.enhencedValidateRequest(challenge, validate, seccode);
    }

    // 判断登录结果
    if (result) {
      return "success";
    } else {
      return "fail";
    }
  }

  @ModelAttribute("geetest")
  public GeetestLibResult getGeetest() {
    // 初始化极验验证
    GeetestLib gtSdk = new GeetestLib(geetestConfig.getGeetestId(), geetestConfig.getGeetestKey());
    String resStr = "{}";
    int gtServerStatus = gtSdk.preProcess();
    resStr = gtSdk.getResponseStr();
    GeetestLibResult geetest = new GeetestLibResult();
    geetest.setGt(geetestConfig.getGeetestId());
    geetest.setChallenge(JSONObject.fromObject(resStr).getString("challenge"));
    geetest.setNew_captcha("true");
    return geetest;
  }

}

在上面的代码中,GeetestConfig是一个配置类,用于存储极验验证的公钥和私钥。GeetestLibResult是一个Java对象,用于将验证参数传递到前端页面中进行初始化。

4. 注意事项

在使用极验验证时,需要注意以下几点:

  1. 必须先注册极验账号,并创建一个验证实例;
  2. 需要在前端页面中引入极验提供的Javascript SDK,并在页面加载时初始化验证码;
  3. 需要在后端代码中使用极验提供的Java SDK库,验证用户提交的验证码;
  4. 极验验证参数是每次服务端请求都会动态生成的,需要在后端代码中生成并传递到前端页面中。

5. 总结

本文介绍了如何使用MVC模式和极验验证制作登录验证码。使用极验验证可以有效防止恶意攻击,提高登录系统的安全性和用户体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MVC使用极验验证制作登录验证码学习笔记7 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 基于一个应用程序多线程误用的分析详解

    基于一个应用程序多线程误用的分析详解 研究目的 本研究旨在探究在多线程应用程序开发中常见的误用,分析其原因以及给出解决方案。 误用场景 多线程应用程序开发中,最常见的误用场景之一就是未正确使用锁机制,导致多个线程访问共享资源时出现竞态条件,从而引发意外的程序崩溃或执行异常。在此,我们将对锁机制的误用进行详细分析。 常见的锁机制误用 锁粒度过小 当多个线程对同…

    C# 2023年5月14日
    00
  • WinForm IP地址输入框控件实现

    WinForm 的 IP 地址输入框控件通常用于用户输入 IPv4 地址时,这个控件会自动把输入的字符串分隔成四个,允许的数字范围在 0 到 255 之间的数字。以下是实现这个控件的攻略: 步骤一:创建自定义控件类 首先,我们需要创建一个继承自 TextBox 的类,并将其命名为 IPTextBox。在这个类中,我们需要添加一个后缀为 “IP” 的属性,以检…

    C# 2023年6月1日
    00
  • Unity通过脚本创建网格Mesh的方法

    当我们需要在Unity中动态创建网格(mesh)的时候,通常都是通过代码来实现。如何在脚本中创建网格呢?接下来,我将为大家详细介绍Unity通过脚本创建网格Mesh的方法,希望能帮到大家。 1. 基础网格Mesh的创建 以下是创建基础网格Mesh的步骤: 创建空GameObject作为网格物体的容器。 创建一个MeshFilter组件并将其附加到新GameO…

    C# 2023年6月3日
    00
  • Entity Framework Core基于数据模型创建数据库

    当使用Entity Framework Core (EF Core) 来开发应用的时候,我们经常需要创建数据库。在基于EF Core的开发中,我们可以通过数据模型(Model)来创建数据库。 下面是详细的操作步骤: 1.创建ASP.NET Core Web应用 首先创建一个名为“EFCoreDemo”的ASP.NET Core Web应用。可以通过使用Vis…

    C# 2023年5月31日
    00
  • c# 剔除sql语句’尾巴’的五种方法

    接下来我将为大家详细介绍“C#剔除SQL语句‘尾巴’的五种方法”: 一、问题描述 有时候在编写C#程序时,我们需要动态生成SQL语句。但是在动态生成SQL语句中,由于字符串拼接不当可能会导致语句的末尾出现多余的“AND”、“OR”等关键字,这就需要我们对字符串进行处理,去掉这些多余的关键字,以保证SQL语句的正确性。 下面将介绍五种方法来解决这个问题。 二、…

    C# 2023年5月15日
    00
  • 深入理解c# checked unchecked 关键字

    关于“深入理解C# checked/unchecked 关键字”的攻略,我会进行详细阐述。首先,我们先来了解一下 checked 和 unchecked 关键字的作用。 checked 和 unchecked 关键字 checked 和 unchecked 关键字是用于控制整型溢出检查的语言特性。按照 C# 程序默认的行为,对于一个整型变量的计算表达式,如果…

    C# 2023年5月15日
    00
  • .Net弹性和瞬态故障处理库Polly介绍

    下面就给您详细讲解一下”.Net弹性和瞬态故障处理库Polly介绍”,这是一款.net生态中十分优秀的库,能够让开发者更好的处理瞬态故障和弹性处理,提高开发效率和用户体验。 Polly简介 什么是Polly? Polly(Polly.Extensions.Http)基于.NET Standard和.NET Core。Polly是.NET弹性和瞬态故障处理库,…

    C# 2023年5月15日
    00
  • 详解LINQ入门(下篇)

    下面我将详细讲解“详解LINQ入门(下篇)”的完整攻略。 一、LINQ基础 1.1 LINQ介绍 LINQ的全称是Language INtegrated Query,即语言集成查询,是微软在.NET Framework 3.5中引入的一项技术。它可以允许我们使用类SQL语句来操作各种数据源,包括XML文档、ADO.NET中的关系型数据库、Linq to SQ…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部