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

 更新时间:2021年9月22日 10:02  点击:1609

极验验证

极验验证是一种在计算机领域用于区分自然人和机器人的,通过简单集成的方式,为开发者提供安全、便捷的云端验证服务。

与以往传统验证码不同的是,极验通过分析用户完成拼图过程中的行为特征,通过数据分析来判断是人还是机器。用户不必面对眼花缭乱的英文字符或汉字,整个验证过程变的像游戏一样有趣。

先上效果图

极验的流程

极验官方文档地址 https://docs.geetest.com/install/deploy/server/csharp

简单说明一下极验的验证流程

引用官方的图片

•向服务器发送请求获取验证参数
•客户端sdk完成验证
•由客户端sdk验证数据提交服务器二次验证

在netcore中使用极验

在我查看官方的sdk过后,发现不是特别好用,根据极验的流程写了一套适用于netcore的极验sdk 开源地址 已经发了nuget包 搜索sharpplug.geetest即可

使用方式很简单,下面通过一个例子来进行讲解

使用命令dotnet new mvc创建一个mvc项目

下一步使用命令dotnet add package sharpplug.geetest安装nuget包

打开startup文件在ConfigureServices中配置geetest服务

 我在极验申请了一个测试用的id和key 大家可以直接测试使用

public void ConfigureServices(IServiceCollection services)
{
  services.Configure<CookiePolicyOptions>(options =>
  {
    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
    options.CheckConsentNeeded = context => true;
    options.MinimumSameSitePolicy = SameSiteMode.None;
  });
  // GeetestOptions中配置id 与 key
  services.AddGeetest(opt=>{
        opt.Id = "e2697c763685a34be93a7d255ee06b59";
        opt.Key = "7882a2d954106041a731f5e10038982a";
      });
  services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

完成获取验证参数与二次验证的类是GeetestManager,它主要有两个方法

获取验证参数方法是Register,它主要有三个参数 userid(用户标识) clientType(客户端类型) 与 ipaddress(客户端ip) 关于参数的细节大家可以去参阅极验文档

Task<GeeTestRegisterResult> Register(string userId = null, string clientType = "unknown", string ipAddress = "unknown")

二次验证方法 Validate 参数为

•offline 是否离线验证(获取验证参数失败时)
•UserId 用户标识
•Challenge
•Seccode
•Validate

Task<bool> Validate(GeetestValidateInput input)

下面打开HomeController添加获取验证参数方法,记得注入GeetestManager

private readonly GeetestManager _geetestManager;
public HomeController(GeetestManager geetestManager)
{
  _geetestManager = geetestManager;
}
public async Task<GeeTestRegisterResult> GeetestRegister()
{
  return await _geetestManager.Register(clientType: "web", ipAddress: "127.0.0.1");
}

下面在HomeController中加入二次验证

public async Task<bool> GeetestValidate(GeetestValidateInput input)
{
  return await _geetestManager.Validate(input);
}

服务端部分已经完成,下面打开index.cshtml先引用gt.js

<script type="text/javascript" src="https://static.geetest.com/static/tools/gt.js"></script>

然后添加html元素

<h2>Getest</h2>
<div id="geetestform">
  <input type="hidden" name="geetest_challenge" id="geetest_challenge">
  <input type="hidden" name="geetest_validate" id="geetest_validate">
  <input type="hidden" name="geetest_seccode" id="geetest_seccode">
</div>
<button class="form-control btn-default" id="validate">点我验证</button>

极验有一个初始化的过程,先调用获取验证参数api进行初始化极验

$(function() {
  $.ajax({
    url: "/home/GeetestRegister",
    type: "get",
    dataType: "json",
    success: function(data) {
      // 使用offline判断是否是离线验证
      offline = !data.success;
      initGeetest({
        // 以下配置参数来自服务端 SDK
        gt: data.gt,
        challenge: data.challenge,
        offline: !data.success,
        new_captcha: true,
        product: "float",
        width: "100%"
      },function(){
        // 初始化元素
        captchaObj.appendTo(document.getElementById('geetestform'));
      })
    }
  });
});

这时运行项目已经可以看到极验的验证表单了并且已经可以进行验证,但是还需要添加点击按钮事件进行二次验证

$("#validate").click(() => {
  var validate = captchaObj.getValidate();
  if (validate === undefined || !validate) {
    alert("请进行验证");
    return;
  }

  $.ajax({
    url: "/home/GeetestValidate",
    method:"post",
    data: {
      offline: offline,
      challenge: validate.geetest_challenge,
      validate: validate.geetest_validate,
      seccode: validate.geetest_seccode
    },
    success: function(res) {
      if (res) {
        alert("二次校验状态成功! 重置验证状态");
        captchaObj.reset();
      } else {
        alert("二次校验状态返回失败! 重置验证状态");
        captchaObj.reset();
      }
    }
  });
});

以上所述是小编给大家介绍的在AspNetCore中使用极验做行为认证的验证流程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对猪先飞网站的支持!

[!--infotagslink--]

相关文章

  • ASP.NET购物车实现过程详解

    这篇文章主要为大家详细介绍了ASP.NET购物车的实现过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • .NET Core下使用Kafka的方法步骤

    这篇文章主要介绍了.NET Core下使用Kafka的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 在ASP.NET 2.0中操作数据之七十二:调试存储过程

    在开发过程中,使用Visual Studio的断点调试功能可以很方便帮我们调试发现程序存在的错误,同样Visual Studio也支持对SQL Server里面的存储过程进行调试,下面就让我们看看具体的调试方法。...2021-09-22
  • Win10 IIS 安装.net 4.5的方法

    这篇文章主要介绍了Win10 IIS 安装及.net 4.5及Win10安装IIS并配置ASP.NET 4.0的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • 详解.NET Core 3.0 里新的JSON API

    这篇文章主要介绍了详解.NET Core 3.0 里新的JSON API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • .net数据库操作框架SqlSugar的简单入门

    这篇文章主要介绍了.net数据库操作框架SqlSugar的简单入门,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下...2021-09-22
  • ASP.NET Core根据环境变量支持多个 appsettings.json配置文件

    这篇文章主要介绍了ASP.NET Core根据环境变量支持多个 appsettings.json配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 记一次EFCore类型转换错误及解决方案

    这篇文章主要介绍了记一次EFCore类型转换错误及解决方案,帮助大家更好的理解和学习使用asp.net core,感兴趣的朋友可以了解下...2021-09-22
  • .NET C#利用ZXing生成、识别二维码/条形码

    ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。这篇文章主要给大家介绍了.NET C#利用ZXing生成、识别二维码/条形码的方法,文中给出了详细的示例代码,有需要的朋友们可以参考借鉴。...2020-06-25
  • 详解ASP.NET Core 中基于工厂的中间件激活的实现方法

    这篇文章主要介绍了ASP.NET Core 中基于工厂的中间件激活的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • C#使用Ado.Net更新和添加数据到Excel表格的方法

    这篇文章主要介绍了C#使用Ado.Net更新和添加数据到Excel表格的方法,较为详细的分析了OLEDB的原理与使用技巧,可实现较为方便的操作Excel数据,需要的朋友可以参考下...2020-06-25
  • asp.net通过消息队列处理高并发请求(以抢小米手机为例)

    这篇文章主要介绍了asp.net通过消息队列处理高并发请求(以抢小米手机为例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • Underscore源码分析

    Underscore 是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象。这篇文章主要介绍了underscore源码分析相关知识,感兴趣的朋友一起学习吧...2016-01-02
  • C#控制台程序使用Log4net日志组件详解

    这篇文章主要为大家详细介绍了C#控制台程序使用Log4net日志组件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • ASP.NET 2.0中的数据操作:使用两个DropDownList过滤的主/从报表

    在前面的指南中我们研究了如何显示一个简单的主/从报表, 该报表使用DropDownList和GridView控件, DropDownList填充类别,GridView显示选定类别的产品. 这类报表用于显示具有...2016-05-19
  • ASP.NET单选按钮控件RadioButton常用属性和方法介绍

    RadioButton又称单选按钮,其在工具箱中的图标为 ,单选按钮通常成组出现,用于提供两个或多个互斥选项,即在一组单选钮中只能选择一个...2021-09-22
  • 详解.NET Core 使用HttpClient SSL请求出错的解决办法

    这篇文章主要介绍了.NET Core 使用HttpClient SSL请求出错的解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-09-22
  • Python调用.NET库的方法步骤

    这篇文章主要介绍了Python调用.NET库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-09
  • ASP.NET中iframe框架点击左边页面链接 右边显示链接页面内容

    这篇文章主要介绍了ASP.NET中iframe框架点击左边页面链接,右边显示链接页面内容的实现代码,感兴趣的小伙伴们可以参考一下...2021-09-22
  • 创建一个完整的ASP.NET Web API项目

    ASP.NET Web API具有与ASP.NET MVC类似的编程方式,ASP.NET Web API不仅仅具有一个完全独立的消息处理管道,而且这个管道比为ASP.NET MVC设计的管道更为复杂,功能也更为强大。下面创建一个简单的Web API项目,需要的朋友可以参考下...2021-09-22