在AspNetCore中使用极验做行为认证的验证流程
极验是一种基于行为认证的验证方式,可以有效地防止机器人攻击。在AspNetCore中,我们可以使用极验来进行行为认证。本攻略将详细介绍在AspNetCore中使用极验做行为认证的验证流程,并提供两个示例说明。
准备工作
在使用极验做行为认证之前,我们需要完成以下准备工作:
- 注册极验账号。
我们需要在极验官网上注册一个账号,并创建一个验证实例。
- 安装极验SDK。
我们可以使用NuGet包管理器来安装极验SDK。在Visual Studio中,我们可以右键单击项目,选择“管理NuGet程序包”,然后搜索并安装极验SDK。
- 配置极验验证实例。
我们需要在AspNetCore应用程序的appsettings.json文件中配置极验验证实例。例如:
{
"Geetest": {
"GeetestId": "极验ID",
"GeetestKey": "极验Key"
}
}
在上面的配置中,我们将极验ID和极验Key设置为了GeetestId和GeetestKey。
验证流程
以下是在AspNetCore中使用极验做行为认证的验证流程:
- 在需要进行行为认证的页面中,添加极验验证的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,并在页面加载时初始化了极验验证。
- 在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方法中初始化了极验验证。
- 在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方法中验证了极验验证的结果。
- 在需要进行行为认证的表单中,添加一个隐藏的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元素,用于存储极验验证的结果。
- 在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中使用极验做行为认证的验证流程。
示例一:在登录页面中使用极验做行为认证
在这个示例中,我们将在登录页面中使用极验做行为认证。
- 在登录页面中,添加极验验证的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代码。
- 在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();
}
}
}
}
}
在上面的代码中,我们处理了登录表单提交的请求,并验证了极验验证的结果。
示例二:在注册页面中使用极验做行为认证
在这个示例中,我们将在注册页面中使用极验做行为认证。
- 在注册页面中,添加极验验证的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代码。
- 在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技术站