【发布时间】:2021-12-22 04:57:23
【问题描述】:
我已将不可见的 reCaptcha V3 添加到 asp.net core 6.0 Angular SPA。
- 注册 MVC 页面 HTML:
. . .
<input type="hidden" name="captcha" id="captchaInput" value="" />
</form>
. . .
@section Scripts {
<script src="https://www.google.com/recaptcha/api.js?render=@Configuration["Recaptcha:siteKey"]"></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('@Configuration["Recaptcha:siteKey"]', { action: 'contact' }).then(function (token) {
$("#captchaInput").val(token);
});
});
</script>
<partial name="_ValidationScriptsPartial" />
}
CS
if (ModelState.IsValid)
{
if (!await _captchaValidator.IsCaptchaPassedAsync(captcha))
ModelState.AddModelError("captcha", "Captcha validation failed");
有注入 reCaptcha 验证器的 OIDC 控制器。
一切正常。直到验证失败(例如低分)。
用户无法从这里继续前进。
我希望验证码会成为常见的可见挑战。
我需要一个可行的解决方案 - 如果 reCaptcha v3 验证失败(无论出于何种原因),如何给用户第二次机会证明他们不是机器人。
【问题讨论】:
-
为什么要给机器人第二次机会?他们是该死的肮脏机器人。如果您坚持认为这样的可疑用户不是机器人,您总是可以退回到验证码 v2,或者不只是给您分数,但需要某种交互性的替代方案,例如“点击所有飞机”或“单击所有看起来像停车收费表的停车收费表和邮箱”。如果你有一个定制的想法,我会挑战你想出一些方法,让某人在实现它之前可以编写脚本,因为他们可能可以。
-
我知道这一切,但只是为了澄清一下——当我测试时,我不知何故达到了 0.45——而且我不是机器人。我确实显示错误消息,但验证码在“注册”页面上。如果一个人撞到这堵墙 - 没有出路。我想捕获每个合法用户。我不关心围绕它编写脚本。它不是网上银行或任何东西。如果您知道如何混合 v3 和 v2 - 请考虑发布答案。谢谢
标签: c# asp.net-mvc asp.net-core recaptcha-v3 .net-6.0