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日

相关文章

  • 在ASP.NET中下载文件的实现代码

    在ASP.NET中实现文件下载可以通过提供文件数据的URL并将其传递到客户端浏览器来完成。以下是实现代码的完整攻略: 第一步:创建ASPX页面 创建一个ASPX页面并将其用于提供文件下载。 在代码前面添加<%@ Page 指令,这样HTML的渲染会被禁用,仅下载文件的处理。 <%@ Page Language="C#" Aut…

    C# 2023年5月31日
    00
  • 使用C#代码获取存储过程返回值

    下面是详细的“使用C#代码获取存储过程返回值”的攻略。 1. 获取存储过程返回值 在C#中调用存储过程时,我们经常需要获取存储过程的返回值。获取存储过程返回值的方法有以下两种: 1.1 使用output参数获取返回值 在存储过程中声明一个output参数,用于返回该存储过程的返回值。在C#中,使用和调用存储过程一样的方法传递一个output参数,然后读取输出…

    C# 2023年6月7日
    00
  • C#判等对象是否相等的方法汇总

    接下来我将为你详细讲解“C#判等对象是否相等的方法汇总”的完整攻略。 1. 前言 在C#中,对象相等判断是我们常见的操作之一。在实际应用中,我们可能会遇到很多情况需要判断两个对象是否相等,但是C#中的判断方式往往让我们比较困惑。因此,本篇文章总结了一些常用的判断方式,帮助您更好地理解和使用C#中的对象相等判断方法。 2. 常用的判断方式 2.1 == 和 !…

    C# 2023年6月1日
    00
  • 基于C#的图表控件库 ScottPlot编译visual studio 2022

    ScottPlot是什么? ScottPlot是一个可视化绘图的C#控件库,提供了丰富的图表类型和交互式功能。ScottPlot基于.NET Core 3.0和.NET Framework 4.6.1开发,支持WinForms、WPF以及控制台程序等多种应用类型。 ScottPlot的安装 在Visual Studio 2022中安装ScottPlot有两种…

    C# 2023年6月3日
    00
  • ASP.NET MVC5网站开发项目框架(二)

    下面我来为您详细讲解“ASP.NET MVC5网站开发项目框架(二)”的完整攻略。 标题 本篇攻略主要讲解MVC5项目框架的使用和配置方法。 代码块 下面是MVC5项目框架配置文件中的示例代码块: <appSettings> <add key="webpages:Version" value="3.0.0.0&…

    C# 2023年6月3日
    00
  • C# Linq的Skip()方法 – 跳过序列中指定数量的元素并返回剩余元素

    当使用LINQ(C# language integrated query)对集合进行查询时,我们经常需要对查询结果进行排序、筛选、分组和投影等操作。而 Skip() 方法是其中一个很有用的操作之一。 一、Skip()方法的概述 Skip() 方法是用来跳过指定数量的元素并返回剩余元素的 LINQ 方法。Skip() 方法跳过序列中的从头开始的指定数量的元素,…

    C# 2023年4月19日
    00
  • 浅谈C#数组(一)

    来分享一下“浅谈C#数组(一)”的完整攻略。 简介 C#中的数组是一组具有相同数据类型的元素的集合。在C#中声明数组时需要指定数据类型、数组名称和数组元素数量。 声明和初始化数组 在C#中声明数组的语法如下: <数据类型>[] <数组名称> = new <数据类型>[<元素数量>]; 例如: int[] num…

    C# 2023年5月15日
    00
  • asp.net neatUpload 支持大文件上传组件

    ASP.NET NeatUpload是一个用于实现大文件上传的组件,它支持各种文件上传场景,并提供了丰富的API以适应不同的需求。下面将详细讲解如何使用该组件实现大文件上传的完整攻略。 1. 安装和配置 首先需要将NeatUpload组件添加到项目中。可使用NuGet安装或者手动下载添加。 Nuget安装: Install-Package NeatUploa…

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