在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#开发中的一个常见需求。以下是取得控制台应用程序根目录的完整攻略。 1. 使用 AppDomain.CurrentDomain.BaseDirectory 可以使用 AppDomain.CurrentDomain.BaseDirectory 来获取控制台应用程序的根目录。这个属性会返回包含二进制文件的目录的字符串路径,并且这个路径…

    C# 2023年6月7日
    00
  • C# DateTime.AddMinutes()方法: 将指定的分钟数加到指定的日期上

    DateTime.AddMinutes()是C#语言中DateTime类型的一个方法,它可以在现有日期上增加指定的分钟数,并返回得到的新日期(新的DateTime对象)。其具体定义为 public DateTime AddMinutes(double value),其中value表示要增加的分钟数,可以是正数(增加)也可以是负数(减少)。 下面是DateTi…

    C# 2023年4月19日
    00
  • 自定义时间格式转换代码分享

    下面是“自定义时间格式转换代码分享”的完整攻略: 目录 背景介绍 代码实现 示例说明 示例1 示例2 总结 背景介绍 在日常开发中,我们常常需要将日期时间按照一定的格式进行转换,以满足不同场景下的需求。例如在前端页面中展示时间、统计用户访问量时需要记录访问时间等等。JavaScript中提供了多种日期时间格式转换的函数,如toLocaleString()、D…

    C# 2023年6月1日
    00
  • Unity3D基于陀螺仪实现VR相机功能

    Unity3D基于陀螺仪实现VR相机功能 – 完整攻略 在Unity3D引擎中,使用陀螺仪可以非常方便地实现VR相机功能,这样可以让我们更好地体验VR游戏或应用。 步骤一:创建一个空项目 在Unity3D中创建一个新项目,选择3D项目。如果你已经有现成的项目,可以直接打开该项目。 步骤二:安装VR支持 在Unity3D中,可以使用VR支持使应用程序支持VR。…

    C# 2023年6月3日
    00
  • ASP.NET Core MVC 从入门到精通之接化发(一)

    随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。   经过前一篇文章的讲解,初步了解ASP.NET Core MVC项目创建…

    C# 2023年4月18日
    00
  • 在 ASP.NET Core 中为 gRPC 服务添加全局异常处理

    在ASP.NET Core中,gRPC是一种常见的跨平台通信方式,它可以帮助开发者在不同的平台之间进行高效的通信。在本攻略中,我们将详细介绍如何为gRPC服务添加全局异常处理,并提供两个示例来说明其用法。 以下是两个示例,介绍如何为gRPC服务添加全局异常处理: 示例一:使用全局异常过滤器 首先,我们需要创建一个全局异常过滤器: public class G…

    C# 2023年5月15日
    00
  • asp.net(c#) RSS功能实现代码

    ASP.NET(C#)中实现RSS功能一般可分为以下步骤: 第一步:准备数据 RSS需要的数据格式一般是XML,所以我们需要准备好相应的XML数据。在ASP.NET中可以使用Linq to XML技术来生成XML,下面是一个示例代码: XElement rss = new XElement("rss", new XAttribute(&q…

    C# 2023年5月31日
    00
  • 基于MVC4+EasyUI的Web开发框架之附件上传组件uploadify的使用

    基于MVC4+EasyUI的Web开发框架之附件上传组件uploadify的使用 什么是uploadify uploadify是一款基于jQuery的上传文件组件,使用uploadify可以方便地在网页中实现文件上传和管理功能。uploadify功能强大,支持多文件上传、拖拽上传、进度条显示、文件类型限制等特性。 如何使用uploadify 引入upload…

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