pos*_*ing 7 recaptcha vue.js vue-component vuetify.js recaptcha-v3
我使用这个包:https : //www.npmjs.com/package/vue-recaptcha-v3
我添加了我的 main.js :
import { VueReCaptcha } from 'vue-recaptcha-v3'
Vue.use(VueReCaptcha, { siteKey: 'xxxxxxx' })
Run Code Online (Sandbox Code Playgroud)
我添加此代码:
await this.$recaptcha('login').then((token) => {
recaptcha = token
})
Run Code Online (Sandbox Code Playgroud)
到我的组件以从 google recapchta 获取令牌
我的问题是右下角的验证码图标出现在所有页面上
我希望它只出现在某些组件中
也许我必须改变这一点:Vue.use(VueReCaptcha, { siteKey: 'xxxxxxxxxxxxxxxxx' })。似乎它仍在安装到Vue.use. 我想挂载到某个组件而不是 vue 根实例
我怎么解决这个问题?
更新
我尝试这样:
Vue.use(VueReCaptcha, {
siteKey: 'xxxxxxx',
loaderOptions: {
useRecaptchaNet: true,
autoHideBadge: true
}
})
Run Code Online (Sandbox Code Playgroud)
它隐藏了徽章。我希望徽章仍然出现。但仅在 1 个页面上,即注册页面。我该怎么做?
我在使用 npm 包时遇到了同样的问题,这非常烦人。
最终,我决定不使用该软件包并遵循Google 的文档。
这行在这里:
grecaptcha.execute('_reCAPTCHA_site_key_', {action: 'login'}).then(function(token) {
recaptcha = token
})
Run Code Online (Sandbox Code Playgroud)
相当于 npm 包中的这一行:
this.$recaptcha('login').then((token) => {
recaptcha = token
})
Run Code Online (Sandbox Code Playgroud)
您只需将此行添加到 <head> 中即可使 recaptcha 正常工作:
<script src="https://www.google.com/recaptcha/api.js?render=_reCAPTCHA_site_key"></script>
Run Code Online (Sandbox Code Playgroud)
但是,一旦脚本标签出现在您的 < head > 中,您将面临它在每个页面上显示的相同问题。
技巧是您只将其插入到您需要的组件的 <head> 中。有很多方法可以做到这一点,但我最终参考了这个。
您可以将其放入组件的方法中并在加载组件时调用该方法。
这样它只会显示在您需要的页面上。
| 归档时间: |
|
| 查看次数: |
2021 次 |
| 最近记录: |