经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » ASP.net » 查看文章
在AspNetCore中使用极验做行为认证的验证流程
来源:jb51  时间:2018/9/25 19:03:37  对本文有异议

极验验证

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

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

先上效果图

极验的流程

极验官方文档地址 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 大家可以直接测试使用

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.Configure<CookiePolicyOptions>(options =>
  4. {
  5. // This lambda determines whether user consent for non-essential cookies is needed for a given request.
  6. options.CheckConsentNeeded = context => true;
  7. options.MinimumSameSitePolicy = SameSiteMode.None;
  8. });
  9. // GeetestOptions中配置id 与 key
  10. services.AddGeetest(opt=>{
  11. opt.Id = "e2697c763685a34be93a7d255ee06b59";
  12. opt.Key = "7882a2d954106041a731f5e10038982a";
  13. });
  14. services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
  15. }

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

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

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

二次验证方法 Validate 参数为

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

  1. Task<bool> Validate(GeetestValidateInput input)

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

  1. private readonly GeetestManager _geetestManager;
  2. public HomeController(GeetestManager geetestManager)
  3. {
  4. _geetestManager = geetestManager;
  5. }
  6. public async Task<GeeTestRegisterResult> GeetestRegister()
  7. {
  8. return await _geetestManager.Register(clientType: "web", ipAddress: "127.0.0.1");
  9. }

下面在HomeController中加入二次验证

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

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

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

然后添加html元素

  1. <h2>Getest</h2>
  2. <div id="geetestform">
  3. <input type="hidden" name="geetest_challenge" id="geetest_challenge">
  4. <input type="hidden" name="geetest_validate" id="geetest_validate">
  5. <input type="hidden" name="geetest_seccode" id="geetest_seccode">
  6. </div>
  7. <button class="form-control btn-default" id="validate">点我验证</button>

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

  1. $(function() {
  2. $.ajax({
  3. url: "/home/GeetestRegister",
  4. type: "get",
  5. dataType: "json",
  6. success: function(data) {
  7. // 使用offline判断是否是离线验证
  8. offline = !data.success;
  9. initGeetest({
  10. // 以下配置参数来自服务端 SDK
  11. gt: data.gt,
  12. challenge: data.challenge,
  13. offline: !data.success,
  14. new_captcha: true,
  15. product: "float",
  16. width: "100%"
  17. },function(){
  18. // 初始化元素
  19. captchaObj.appendTo(document.getElementById('geetestform'));
  20. })
  21. }
  22. });
  23. });

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

  1. $("#validate").click(() => {
  2. var validate = captchaObj.getValidate();
  3. if (validate === undefined || !validate) {
  4. alert("请进行验证");
  5. return;
  6. }
  7.  
  8. $.ajax({
  9. url: "/home/GeetestValidate",
  10. method:"post",
  11. data: {
  12. offline: offline,
  13. challenge: validate.geetest_challenge,
  14. validate: validate.geetest_validate,
  15. seccode: validate.geetest_seccode
  16. },
  17. success: function(res) {
  18. if (res) {
  19. alert("二次校验状态成功! 重置验证状态");
  20. captchaObj.reset();
  21. } else {
  22. alert("二次校验状态返回失败! 重置验证状态");
  23. captchaObj.reset();
  24. }
  25. }
  26. });
  27. });

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号