在AspNetCore中使用极验做行为认证的验证流程

在AspNetCore中使用极验做行为认证的验证流程

极验是一种基于行为认证的验证方式,可以有效地防止机器人攻击。在AspNetCore中,我们可以使用极验来进行行为认证。本攻略将详细介绍在AspNetCore中使用极验做行为认证的验证流程,并提供两个示例说明。

准备工作

在使用极验做行为认证之前,我们需要完成以下准备工作:

  1. 注册极验账号。

我们需要在极验官网上注册一个账号,并创建一个验证实例。

  1. 安装极验SDK。

我们可以使用NuGet包管理器来安装极验SDK。在Visual Studio中,我们可以右键单击项目,选择“管理NuGet程序包”,然后搜索并安装极验SDK。

  1. 配置极验验证实例。

我们需要在AspNetCore应用程序的appsettings.json文件中配置极验验证实例。例如:

{
  "Geetest": {
    "GeetestId": "极验ID",
    "GeetestKey": "极验Key"
  }
}

在上面的配置中,我们将极验ID和极验Key设置为了GeetestId和GeetestKey。

验证流程

以下是在AspNetCore中使用极验做行为认证的验证流程:

  1. 在需要进行行为认证的页面中,添加极验验证的JavaScript代码。
<div id="captcha"></div>

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://static.geetest.com/static/tools/gt.js"></script>
<script>
    var handler = function (captchaObj) {
        captchaObj.appendTo("#captcha");
        captchaObj.onReady(function () {
            $("#wait").hide();
        });
    };

    $.ajax({
        url: "/Home/GeetestInit",
        type: "get",
        dataType: "json",
        success: function (data) {
            initGeetest({
                gt: data.gt,
                challenge: data.challenge,
                offline: !data.success,
                new_captcha: data.new_captcha,
                product: "float",
                width: "100%",
                lang: "zh-cn",
                https: true
            }, handler);
        }
    });
</script>

在上面的代码中,我们使用了jQuery和极验SDK,创建了一个行为认证的div,并在页面加载时初始化了极验验证。

  1. 在AspNetCore应用程序中,创建一个GeetestController,并添加一个GeetestInit方法。
using GeetestSDK;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;

namespace MyWebApp.Controllers
{
    public class GeetestController : Controller
    {
        private readonly IConfiguration _configuration;

        public GeetestController(IConfiguration configuration)
        {
            _configuration = configuration;
        }

        [HttpGet]
        public IActionResult GeetestInit()
        {
            GeetestLib geetest = new GeetestLib(_configuration["Geetest:GeetestId"], _configuration["Geetest:GeetestKey"]);
            string challenge = geetest.register(null, null);
            return Json(new { gt = geetest.gt, challenge = challenge, success = 1 });
        }
    }
}

在上面的代码中,我们使用了GeetestSDK,创建了一个GeetestLib对象,并在GeetestInit方法中初始化了极验验证。

  1. 在AspNetCore应用程序中,创建一个HomeController,并添加一个GeetestValidate方法。
using GeetestSDK;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;

namespace MyWebApp.Controllers
{
    public class HomeController : Controller
    {
        private readonly IConfiguration _configuration;

        public HomeController(IConfiguration configuration)
        {
            _configuration = configuration;
        }

        [HttpPost]
        public IActionResult GeetestValidate(string geetest_challenge, string geetest_validate, string geetest_seccode)
        {
            GeetestLib geetest = new GeetestLib(_configuration["Geetest:GeetestId"], _configuration["Geetest:GeetestKey"]);
            int result = geetest.enhencedValidateRequest(geetest_challenge, geetest_validate, geetest_seccode, null);
            if (result == 1)
            {
                return Json(new { success = true });
            }
            else
            {
                return Json(new { success = false });
            }
        }
    }
}

在上面的代码中,我们使用了GeetestSDK,创建了一个GeetestLib对象,并在GeetestValidate方法中验证了极验验证的结果。

  1. 在需要进行行为认证的表单中,添加一个隐藏的input元素,用于存储极验验证的结果。
<form>
    <div id="captcha"></div>
    <input type="hidden" id="geetest_challenge" name="geetest_challenge" />
    <input type="hidden" id="geetest_validate" name="geetest_validate" />
    <input type="hidden" id="geetest_seccode" name="geetest_seccode" />
    <button type="submit">提交</button>
</form>

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://static.geetest.com/static/tools/gt.js"></script>
<script>
    var handler = function (captchaObj) {
        captchaObj.appendTo("#captcha");
        captchaObj.onReady(function () {
            $("#wait").hide();
        });
        captchaObj.onSuccess(function () {
            var result = captchaObj.getValidate();
            $("#geetest_challenge").val(result.geetest_challenge);
            $("#geetest_validate").val(result.geetest_validate);
            $("#geetest_seccode").val(result.geetest_seccode);
        });
    };

    $.ajax({
        url: "/Home/GeetestInit",
        type: "get",
        dataType: "json",
        success: function (data) {
            initGeetest({
                gt: data.gt,
                challenge: data.challenge,
                offline: !data.success,
                new_captcha: data.new_captcha,
                product: "float",
                width: "100%",
                lang: "zh-cn",
                https: true
            }, handler);
        }
    });
</script>

在上面的代码中,我们添加了三个隐藏的input元素,用于存储极验验证的结果。

  1. 在AspNetCore应用程序中,处理表单提交的请求,并验证极验验证的结果。
using Microsoft.AspNetCore.Mvc;

namespace MyWebApp.Controllers
{
    public class HomeController : Controller
    {
        [HttpPost]
        public IActionResult Submit(string geetest_challenge, string geetest_validate, string geetest_seccode)
        {
            if (string.IsNullOrEmpty(geetest_challenge) || string.IsNullOrEmpty(geetest_validate) || string.IsNullOrEmpty(geetest_seccode))
            {
                return Json(new { success = false, message = "请完成行为认证。" });
            }
            else
            {
                // 验证极验验证的结果
                return Json(new { success = true });
            }
        }
    }
}

在上面的代码中,我们验证了极验验证的结果,并返回了验证结果。

示例说明

以下是两个示例,演示了如何在AspNetCore中使用极验做行为认证的验证流程。

示例一:在登录页面中使用极验做行为认证

在这个示例中,我们将在登录页面中使用极验做行为认证。

  1. 在登录页面中,添加极验验证的JavaScript代码。
<div id="captcha"></div>

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://static.geetest.com/static/tools/gt.js"></script>
<script>
    var handler = function (captchaObj) {
        captchaObj.appendTo("#captcha");
        captchaObj.onReady(function () {
            $("#wait").hide();
        });
        captchaObj.onSuccess(function () {
            var result = captchaObj.getValidate();
            $("#geetest_challenge").val(result.geetest_challenge);
            $("#geetest_validate").val(result.geetest_validate);
            $("#geetest_seccode").val(result.geetest_seccode);
            $("#login-form").submit();
        });
    };

    $.ajax({
        url: "/Home/GeetestInit",
        type: "get",
        dataType: "json",
        success: function (data) {
            initGeetest({
                gt: data.gt,
                challenge: data.challenge,
                offline: !data.success,
                new_captcha: data.new_captcha,
                product: "float",
                width: "100%",
                lang: "zh-cn",
                https: true
            }, handler);
        }
    });
</script>

在上面的代码中,我们添加了一个登录表单,并在表单中添加了极验验证的JavaScript代码。

  1. 在AspNetCore应用程序中,处理登录表单提交的请求,并验证极验验证的结果。
using Microsoft.AspNetCore.Mvc;

namespace MyWebApp.Controllers
{
    public class HomeController : Controller
    {
        [HttpGet]
        public IActionResult Login()
        {
            return View();
        }

        [HttpPost]
        public IActionResult Login(string username, string password, string geetest_challenge, string geetest_validate, string geetest_seccode)
        {
            if (string.IsNullOrEmpty(geetest_challenge) || string.IsNullOrEmpty(geetest_validate) || string.IsNullOrEmpty(geetest_seccode))
            {
                ViewBag.Message = "请完成行为认证。";
                return View();
            }
            else
            {
                // 验证极验验证的结果
                if (true)
                {
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ViewBag.Message = "用户名或密码错误。";
                    return View();
                }
            }
        }
    }
}

在上面的代码中,我们处理了登录表单提交的请求,并验证了极验验证的结果。

示例二:在注册页面中使用极验做行为认证

在这个示例中,我们将在注册页面中使用极验做行为认证。

  1. 在注册页面中,添加极验验证的JavaScript代码。
<div id="captcha"></div>

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://static.geetest.com/static/tools/gt.js"></script>
<script>
    var handler = function (captchaObj) {
        captchaObj.appendTo("#captcha");
        captchaObj.onReady(function () {
            $("#wait").hide();
        });
        captchaObj.onSuccess(function () {
            var result = captchaObj.getValidate();
            $("#geetest_challenge").val(result.geetest_challenge);
            $("#geetest_validate").val(result.geetest_validate);
            $("#geetest_seccode").val(result.geetest_seccode);
            $("#register-form").submit();
        });
    };

    $.ajax({
        url: "/Home/GeetestInit",
        type: "get",
        dataType: "json",
        success: function (data) {
            initGeetest({
                gt: data.gt,
                challenge: data.challenge,
                offline: !data.success,
                new_captcha: data.new_captcha,
                product: "float",
                width: "100%",
                lang: "zh-cn",
                https: true
            }, handler);
        }
    });
</script>

在上面的代码中,我们添加了一个注册表单,并在表单中添加了极验验证的JavaScript代码。

  1. 在AspNetCore应用程序中,处理注册表单提交的请求,并验证极验验证的结果。
using Microsoft.AspNetCore.Mvc;

namespace MyWebApp.Controllers
{
    public class HomeController : Controller
    {
        [HttpGet]
        public IActionResult Register()
        {
            return View();
        }

        [HttpPost]
        public IActionResult Register(string username, string password, string geetest_challenge, string geetest_validate, string geetest_seccode)
        {
            if (string.IsNullOrEmpty(geetest_challenge) || string.IsNullOrEmpty(geetest_validate) || string.IsNullOrEmpty(geetest_seccode))
            {
                ViewBag.Message = "请完成行为认证。";
                return View();
            }
            else
            {
                // 验证极验验证的结果
                if (true)
                {
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ViewBag.Message = "注册失败。";
                    return View();
                }
            }
        }
    }
}

在上面的代码中,我们处理了注册表单提交的请求,并验证了极验验证的结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在AspNetCore中使用极验做行为认证的验证流程 - Python技术站

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

相关文章

  • C#中分部类和分部方法的应用

    当我们在编写一个C#类时,该类通常会包含很多方法和属性。如果类的代码太长,它就可能会变得难以阅读和维护。为了解决这个问题,C#提供了一种将类和方法拆分成多个文件的方法。这就是分部类和分部方法的应用。 分部类 分部类指的是单个类定义在多个文件中。每个文件都包含类定义的一部分,而所有文件的内容被视为一个单独的完整类定义。在C#中,可以使用 partial 关键字…

    C# 2023年6月7日
    00
  • C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍

    C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍 1. WebRequest与WebResponse抽象类 WebRequest与WebResponse是C#中用于发送HTTP请求并获取HTTP响应的抽象类,它们的定义位于System.Net命名空间中。WebRequest对象表示一个HTTP请求的数据,并且可以使用W…

    C# 2023年6月6日
    00
  • ASP.NET Core实现中间件的几种方式

    ASP.NET Core 实现中间件的几种方式 ASP.NET Core 是一个跨平台的开源框架,它提供了多种实现中间件的方式。下面是详细的攻略: 步骤1:创建 ASP.NET Core 项目 在 Visual Studio 中创建名为“MiddlewareDemo”的 Core 项目。 步骤2:使用 Use 方法添加中间件 在 Startup.cs 文件中…

    C# 2023年5月12日
    00
  • C#将html table 导出成excel实例

    下面是关于“C#将html table 导出成excel实例”的完整攻略。 1. 环境准备 在使用C#将HTML表格导出为Excel之前,需要确保安装并引用以下两个库: EPPlus :一个用于创建和读取Excel的开源库,可在 Nuget 上查找和安装。 HtmlAgilityPack: 一个用于处理HTML文档的开源库,可在 Nuget 上查找和安装。 …

    C# 2023年6月2日
    00
  • C#如何获取枚举的描述属性详解

    获取枚举的描述属性在日常C#开发中是一个常见需求。我们可以通过反射的方式获取枚举成员上的Description属性,从而获取枚举成员对应的描述信息。下面是详细的攻略: 一、为枚举成员添加Description属性 要获取枚举成员的描述信息,我们首先需要为每个枚举成员添加相应的Description属性,例如: public enum Gender { [De…

    C# 2023年6月6日
    00
  • C#中Invoke 和 BeginInvoke 的真正涵义

    下面是详细的讲解“C#中Invoke和BeginInvoke的真正涵义”的攻略。 Invoke和BeginInvoke的概述 在C#中,Invoke和BeginInvoke是两个常用的方法,用于在UI线程上执行操作。它们的主要目的是“跨线程访问UI控件”,因为在Windows Forms、WPF、ASP.NET Web Forms等应用程序中,只能在创建UI…

    C# 2023年6月7日
    00
  • C#计算字符串相似性的方法

    C#计算字符串相似性的方法攻略 计算字符串相似性可以帮助我们判断文本相似程度或者判断是否为同一段文本。在C#中有多种方法可以计算字符串相似性,包括基于相同字符数量、基于子字符串匹配数量、基于编辑距离等不同算法。以下是一些常见方法的解释和示例。 1. 基于相同字符数量 这个方法的核心思想是计算两个字符串中有多少个字符是相同的。在C#中,我们可以通过如下代码实现…

    C# 2023年6月8日
    00
  • 基于Unity实现3D版2048游戏的示例代码

    让我为您详细讲解一下基于Unity实现3D版2048游戏的完整攻略。 1、什么是2048游戏? 2048游戏是一款益智类小游戏,由Gabriele Cirulli在2014年创建。游戏规则非常简单:玩家通过滑动棋子,让相同数字的棋子相加,最终得到数字2048的棋子即可胜利。该游戏适合所有年龄段的玩家,可以锻炼玩家的观察力和反应能力。 2、如何基于Unity实…

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