我已经在我的ASP.NET MVC项目中设置了reCAPTCHA v3。一切都运行得很好,并且可以正常地传回数据。
因此,下面的代码依赖于我拥有的另一个dll,但基本上,响应是以对象的形式返回的,该对象显示JSON请求传递回的所有内容,如https://developers.google.com/recaptcha/docs/v3所述
这一切都起作用了。
但是现在我知道响应是成功的,并且我有了分数,我该怎么办呢?如果分数为.3或更低,会发生什么?有些人建议将v2也设置为二次验证(即“选择此图片中的所有停止标志”或“键入您看到的单词”)。这真的是唯一“好”的选择吗?
显然,代码还不够完美。我可能会在AJAX调用中处理解决方案,而不是在控制器中处理,但仍然如此。分数低的话怎么办?
我读了reCaptcha v3 handle score callback的这篇文章,它有一点帮助,但我仍然在努力理解。我不一定需要代码(尽管它不会有什么坏处),只需要关于如何做的建议。
查看:
<script src="https://www.google.com/recaptcha/api.js?render=@Session["reCAPTCHA"]"></script>
grecaptcha.ready(function () {
grecaptcha.execute('@Session["reCAPTCHA"]', { action: 'homepage' }).then(function (token) {
$.ajax({
type: "POST",
url: "Home/Method",
data: JSON.stringify({token: token }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
console.log('Passed the token successfully');
},
failure: function (response) {
alert(response.d);
}
});
});
});
控制器:
[HttpPost]
public void ReCaptchaValidator(string token)
{
ReCaptcha reCaptcha = new ReCaptcha();
Models.ReCaptcha response = new Models.ReCaptcha();
response = reCaptcha.ValidateCaptcha(token);
//response returns JSON object including sucess and score
if (response.Success)
{
//WHAT DO I DO HERE????
}
}
发布于 2019-12-06 03:28:51
最终从另一个论坛得到了答案。基本上,答案是“任何你想要的”。在处理成功的响应时,没有对错之分。
因此,可以做的是,如果响应成功,并且验证码没有抛出标志,则什么也不做。但如果验证码不满意,你可以显示一条警告或标语“无法处理”,或者你甚至可以添加CAPTCA版本2,这将使他们进行图片测试或“我不是机器人”复选框等。
https://stackoverflow.com/questions/57998275
复制相似问题