在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日

相关文章

  • 使用Seq搭建免费的日志服务的方法

    标题:使用Seq搭建免费的日志服务的方法 简介 在软件开发过程中,日志是非常关键的组成部分。而使用Seq 则可以方便地实现对服务日志的收集和分析。本文将介绍如何搭建Seq日志服务。 步骤 1. 安装Docker 首先,需要安装docker,如果已经有了可跳过此步骤。 2. 下载Seq镜像 通过docker命令行工具,下载Seq镜像文件: docker pul…

    C# 2023年6月3日
    00
  • C#中截取字符串的的基本方法详解

    C#中截取字符串的基本方法详解 前言 C#中操作字符串是开发中必不可少的一项技能,对字符串截取更是至关重要。本文将详细介绍C#中截取字符串的基本方法,希望能对大家有所帮助。 Substring方法 C#中内置的字符串截取方法是Substring。它可以通过指定起始位置和截取长度来截取字符串。 下面是一个示例: string str = "Hello…

    C# 2023年6月8日
    00
  • C#实现异步的常用方式总结

    让我来详细讲解一下“C#实现异步的常用方式总结”的完整攻略。 异步编程简介 在 C# 中,我们使用异步编程来执行长时间运行的操作,以便不会阻塞主线程。异步编程可以在不使用多线程的情况下实现并发性,并且能够改善应用程序的响应性能。 C# 实现异步的常用方式 C# 实现异步的常用方式主要有以下方式: 1.使用 Task 和 async/await Task 和 …

    C# 2023年5月15日
    00
  • C#调用EXE文件实现传参和获取返回结果

    首先,我们需要知道C#调用EXE文件实现传参和获取返回结果的基本流程。具体流程如下: 1.使用Process类启动外部EXE程序。 2.在ProcessStartInfo对象中设置使用的外部程序、参数和重定向标准输入输出等配置。 3.使用Process类的StandardInput属性向外部程序写入数据。 4.使用Process类的StandardOutpu…

    C# 2023年5月15日
    00
  • WinForm导出文件为Word、Excel、文本文件的方法

    WinForm是一种典型的Windows桌面应用程序开发技术,它提供了丰富的界面控件和处理逻辑的能力。在WinForm应用中,我们需要经常使用到文件导出功能,常见的导出格式包括Word文档、Excel文档以及文本文件。本篇攻略将详细介绍WinForm导出文件为Word、Excel、文本文件的方法,并提供两个示例说明。 1. 导出Word文档 1.1 安装并引…

    C# 2023年6月1日
    00
  • 不使用web服务(Service)实现文本框自动完成扩展

    实现文本框自动完成扩展是一种常见的Web开发任务,它可以帮助用户快速输入和选择文本。在本攻略中,我们将介绍如何不使用Web服务(Service)实现文本框自动完成扩展,并提供两个示例来说明其用法。 以下是两个示例,介绍如何不使用Web服务(Service)实现文本框自动完成扩展: 示例一:使用jQuery UI实现文本框自动完成扩展 首先,我们需要引入jQu…

    C# 2023年5月15日
    00
  • C#中多态现象和多态的实现方法

    下面来详细讲解一下”C#中多态现象和多态的实现方法”的攻略。 什么是多态? 多态,英文名为Polymorphism,是指在面向对象编程中,同一种行为表现出不同的形态和用途,也是一种很强大的面向对象编程特性。 在实际应用中,多态通常指的是一个变量(或参数、返回值等)能够具有多种类型,且能够根据不同的类型而呈现出多种不同的行为的能力,这种能力通常是通过继承、重载…

    C# 2023年6月7日
    00
  • C#生成putty格式的ppk文件

    生成putty格式的ppk文件需要经过以下几个步骤: 生成SSH密钥对 首先需要在本地生成SSH密钥对,可以使用OpenSSH或PuTTY生成器工具。以下是使用OpenSSH生成SSH密钥对的步骤: 打开终端或命令行窗口。 在命令行中输入以下命令生成SSH密钥对: ssh-keygen -t RSA -b 2048 根据提示输入密钥名称、密码等相关信息,并确…

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