我尝试将recaptcha v3集成到我的登录表单中,并应用了所有必要的配置组合和示例。这是我基于文档页面的实现。但是,我不能通过考试 g-recaptcha-response
对我的价值 Java
后端。我认为这个问题与合并有关 grecaptcha
及 submit
方法如下。
index.html:
<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>
login.vue:
<a-button class="primary g-recaptcha" <!-- added "g-recaptcha" to the class -->
@click="onSubmit">
Login
</a-button>
onSubmit() {
grecaptcha.ready(function() {
grecaptcha.execute('reCAPTCHA_site_key', {action: 'submit'})
.then(function(token) {
// I move my login block to here ---------------------------------
this.$refs.formContainer.validate((valid) => { // --> throws error
if (valid) {
const params = { email: 'test@test.com', password: '******' };
this.login(params).then((response) => {
// pass "token" value to the backend
});
}
return false;
});
// ---------------------------------------------------------------
});
});
}
},
虽然我正确地获得了令牌值,但是 this.$refs.formContainer.validate((valid)
行抛出“未捕获(承诺中)typeerror:无法读取未定义的属性“$refs”错误。那么,我应该如何结合这些方法呢( grecaptcha.execute
和我的登录块)是否正确?
1条答案
按热度按时间yyhrrdl81#
贮藏
this
在变量中,并使用它调用函数