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#递归应用之实现JS文件的自动引用

    下面我将详细讲解“C#递归应用之实现JS文件的自动引用”的完整攻略,包括过程和示例。 背景介绍 在网页中,经常需要引入多个JS文件,但是手动一个一个引入比较麻烦,而且还容易出错。因此,我们可以通过C#递归应用实现JS文件的自动引用。 实现步骤 具体实现步骤如下: 获取指定文件夹下所有.js文件的路径 将这些路径添加到HTML代码的头文件中 如果JS文件中还有…

    C# 2023年6月7日
    00
  • EF Core基础入门教程

    EF Core是一个轻量级、可扩展的ORM框架,提供了一种使用C#代码进行数据库访问和操作的方式。在本篇文章中,我们将介绍EF Core的基础入门教程。 安装EF Core 首先,下载并安装.NET Core SDK。然后,可以使用以下命令安装EF Core: dotnet add package Microsoft.EntityFrameworkCore …

    C# 2023年6月3日
    00
  • C#集合之位数组的用法

    C#集合之位数组的用法 介绍 位数组(BitArray)是C#中的一种特殊集合类型,用于存储0和1位的值,常用于大规模数据的标记和处理。在C#中,位数组是System.Collections命名空间下的一个类,可以通过创建新的BitArray实例来使用和操作。本文将介绍如何使用C#中的位数组,包括创建实例、初始化、添加或修改元素、访问元素、遍历等基本操作。并…

    C# 2023年6月7日
    00
  • C#编程实现获取文件夹中所有文件的文件名

    下面是详细的攻略: 使用C#编程实现获取文件夹中所有文件的文件名 1. 打开Visual Studio创建新的控制台应用程序项目 以Visual Studio 2019为例,新建项目流程如下: 打开 Visual Studio。 选择“创建新项目”。 选择“控制台应用程序”。 可以选择使用.Net Framework或.Net Core,选择一个你习惯的就好…

    C# 2023年6月1日
    00
  • 微信 getAccessToken方法详解及实例

    “微信 getAccessToken方法详解及实例”攻略 1. 什么是微信getAccessToken方法 在开发微信公众号或小程序等相关应用程序时,我们需要通过微信开放平台提供的API接口来获取许多微信相关资源。其中,getAccessToken方法是必不可少的一步,它可以用来获取access_token,即访问令牌,在访问一些微信资源时需要用到。 2. …

    C# 2023年5月31日
    00
  • C# 大数据导出word的假死报错的处理方法

    标题:C#大数据导出word的假死报错的处理方法 问题描述 在C#大数据导出Word时,当数据量过大时,容易出现程序假死或报错的情况,影响用户体验。本文将分享如何处理这类问题。 解决方法 分段处理数据: 由于数据量太大会导致程序假死,实际上这是在内存中加载数据太多造成的,所以可以考虑将数据分段处理,比如每次只处理1000条数据,这样即使数据量过大也可以较快的…

    C# 2023年5月14日
    00
  • 详解C# Protobuf如何做到0分配内存的序列化

    C# protobuf是Google开发的一种高效的序列化格式。相较于其他序列化方式(比如XML或Json),它所占用的空间更少,同时速度更快,因为它是二进制序列化格式。在进行序列化过程中,内存的分配是一个非常重要的问题,因为大量的内存分配会导致性能下降甚至内存溢出。本文将详细介绍C# protobuf如何实现0分配内存的序列化。 一、使用“MemorySt…

    C# 2023年5月31日
    00
  • C#把EXCEL数据转换成DataTable

    下面是详细讲解”使用C#将Excel数据转换为DataTable”的完整攻略: 准备工作 在使用C#处理Excel文件的时候,我们需要先安装Microsoft.Office.Interop.Excel和Microsoft.Office.Core这两个组件。可以通过Nuget包管理器安装这两个组件。 方法一:使用OleDb读取Excel数据 这种方法适用于xl…

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