【发布时间】:2021-09-08 00:05:37
【问题描述】:
我正在尝试在我的 asp.net 网络表单页面上实现 v3 recaptcha。
主要问题是我认为 grecaptcha.ready 是异步的,因为页面会立即回发并且不会等待客户端事件完成。
如何让回发等待 grecaptcha.ready 和 grecaptcha.execute?
前端代码:
<script src="https://www.google.com/recaptcha/api.js?render=key"></script>
<script>
function onbtnRegistrazioneClick(e) {
return grecaptcha.ready(function () {
grecaptcha.execute('key', { action: 'submit' }).then(function (token) {
console.log(token);
document.getElementById("gRecaptchaResponse").value = token;
});
});
}
</script>
<asp:Button runat="server" ID="btnRegistrazioneCliente" CssClass="btnGenerico" Text='<%$ Resources:btnRegistratiText%>' ValidationGroup="NewUtente" CausesValidation="true" OnClientClick="onbtnRegistrazioneClick(event);"></asp:Button>
<input type="hidden" value="" id="gRecaptchaResponse" name="gRecaptchaResponse" />
返回代码:
Public Sub btnRegistrazioneCliente_Click(sender As Object, e As System.EventArgs) Handles btnRegistrazioneCliente.Click 'btnRegistrazioneCliente.ServerClick '
If Me.IsValid Then
Dim gRecaptchaResponse As String = Request.Form("gRecaptchaResponse")
Dim isCaptchaValid As Boolean = Globals.Security.ReCaptchaV3.Validate(gRecaptchaResponse)
'...
else
'...
end if
End Sub
【问题讨论】:
标签: javascript asp.net vb.net webforms recaptcha-v3