当前位置: 首页 > 编程笔记 >

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

华宏逸
2023-03-14
本文向大家介绍在AspNetCore中使用极验做行为认证的验证流程,包括了在AspNetCore中使用极验做行为认证的验证流程的使用技巧和注意事项,需要的朋友参考一下

极验验证

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

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

先上效果图

极验的流程

极验官方文档地址 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中使用极验做行为认证的验证流程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 本文向大家介绍使用puppeteer破解极验的滑动验证码,包括了使用puppeteer破解极验的滑动验证码的使用技巧和注意事项,需要的朋友参考一下 基本的流程: 1. 打开前端网,点击登录。 2. 填写账号,密码。 3. 点解验证按钮,通过滑动验证,最后成功登陆。 代码实现: github上可以checkout。 具体代码如下所示: run.js 运行 1. 将这个两个文件保存到文件夹下面,终端切

  • 我正在用以下组件构建自己的证书链: 根证书是自签名证书,中间证书由根证书和用户由中间证书签名。 现在我想验证一个用户证书是否有其根证书的锚。 具有 验证是可以的。在下一步中,我将使用 验证结果显示 什么是错的?

  • 首先,我是Vaadin7的新手。当我发现BeanFieldGroup.class时,我正在尝试一些vaadin演示。正如我所看到的,这个类将一个字段绑定到一个bean属性。在bean中,使用验证约束注释对属性进行注释(JSR303)。在本例中,我的pom.xml包含hibernate验证器依赖项: 我创建了validationmessage.properties文件,并在其中放了一些消息(带有匈牙

  • 本文向大家介绍Django中使用极验Geetest滑动验证码过程解析,包括了Django中使用极验Geetest滑动验证码过程解析的使用技巧和注意事项,需要的朋友参考一下 一,环境部署 1.创建一个django测试项目 二,文档部署 1.下载安装python对应的SDK 使用命令从Github导入完整项目:git clone https://github.com/GeeTeam/gt3-pytho

  • 本文向大家介绍php中使用GD库做验证码,包括了php中使用GD库做验证码的使用技巧和注意事项,需要的朋友参考一下 主要要点: 1、如果前面没有申明session_start();则需要申明; 2、字体可以在cmf输入fonts下载到自己定义的fonts文件夹; 3、$_SESSION [$sess_name]可以通过$_POST获得用户输入的验证码进行比较。

  • 我正在尝试使用自定义Bean验证来验证应该大于零的数值,但问题是使用如下单个自定义验证器来验证任何数值:整数、浮点数、双......: 整数int; @PositiveNumber双倍双; 这可能吗?