这篇文章主要介绍了在AspNetCore中如何使用极验做行为认证,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
先上效果图
<强>极验的流程强>
极验官方文档地址https://docs.geetest.com/install/deploy/server/csharp
简单说明一下极验的验证流程
引用官方的图片
?向服务器发送请求获取验证参数
?客户端sdk完成验证
?由客户端sdk验证数据提交服务器二次验证
<强>在netcore中使用极验强>
在我查看官方的sdk过后,发现不是特别好用,根据极验的流程写了一套适用于netcore的极验sdk开源地址已经发了nuget包搜索sharpplug。这些年即可
使用方式很简单、下面通过一个例子来进行讲解
使用命令新mvc代码> <代码> dotnet创建一个mvc项目
下一步使用命令<代码> dotnet添加包sharpplug.geetest 代码>安装nuget包
打开启动文件在ConfigureServices中配置geet服务
,我在极验申请了一个测试用的id和关键大家可以直接测试使用
public void ConfigureServices (IServiceCollection 服务) { services.Configure<才能;CookiePolicyOptions> (options =比; {才能 ,,,//,却;能够lambda determines whether user consent for non-essential cookies is needed for a given 请求。 ,,,options.CheckConsentNeeded =, context =祝辞,真的; ,,,options.MinimumSameSitePolicy =, SameSiteMode.None; ,,});//才能,GeetestOptions中配置id 与关键 services.AddGeetest才能(选择=祝辞{ ,,,,,,,opt.Id =,“e2697c763685a34be93a7d255ee06b59"; ,,,,,,,opt.Key =,“7882 a2d954106041a731f5e10038982a"; ,,,,,}); services.AddMvc才能().SetCompatibilityVersion (CompatibilityVersion.Version_2_1); }
完成获取验证参数与二次验证的类是GeetestManager,它主要有两个方法
获取验证参数方法是登记,它主要有三个参数userid(用户标识)clientType(客户端类型)与ipaddress(客户端ip)关于参数的细节大家可以去参阅极验文档
Task,注册(string userId =, null,, string clientType =,“unknown",, string ipAddress =,“unknown")
二次验证方法验证参数为
?离线是否离线验证(获取验证参数失败时)
?标识用户标识
?
挑战? Seccode
?验证
Task,验证(GeetestValidateInput 输入)
下面打开HomeController添加获取验证参数方法,记得注入GeetestManager
private readonly GeetestManager _geetestManager; public HomeController (GeetestManager geetestManager) { 时间=_geetestManager 才能;geetestManager; } public async  Task下面在HomeController中加入二次验证
public async Task, GeetestValidate (GeetestValidateInput 输入) { return 才能;await  _geetestManager.Validate(输入); } 服务端部分已经完成,下面打开index.cshtml先引用gt。js
& lt; script 类型=拔谋?javascript", https://www.yisu.com/zixun/src=" https://static.geetest.com/static/tools/gt.js "> 脚本>然后添加html元素
& lt; h3> Getest & lt; div id=癵eetestform"祝辞 & lt;才能input 类型=癶idden", name=癵eetest_challenge", id=癵eetest_challenge"比; & lt;才能input 类型=癶idden", name=癵eetest_validate", id=癵eetest_validate"比; & lt;才能input 类型=癶idden", name=癵eetest_seccode", id=癵eetest_seccode"比; & lt;/div> & lt; button 类=癴orm-control  btn-default", id=皏alidate"在点我验证& lt;/button>极验有一个初始化的过程,先调用获取验证参数api进行初始化极验
$(()函数,{ . ajax({美元才能 ,,,url:,“/home/GeetestRegister", ,,,类型:,“get", ,,,数据类型:,“json" 成功,,,:,功能(数据),{ ,,,,,//,使用离线判断是否是离线验证 ,,,,,offline =, ! data.success; ,,,,,initGeetest ({ ,,,,,,,//,以下配置参数来自服务端,SDK ,,,,,,,gt:, data.gt, ,,,,,,,挑战:,data.challenge, ,,,,,,,离线:,! data.success, null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null在AspNetCore中如何使用极验做行为认证