angular - Recaptcha google on angular 6 实现

标签 angular recaptcha

我正在尝试以 Angular 实现 recaptcha2,但我不知道我将步骤 3 放在我的代码中的什么位置 https://www.npmjs.com/package/angular-google-recaptcha 我正在创建一个需要这个的表单,这里是我放置验证码的地方:

<div class="form-group-log text-center but-form">
    <div class="g-recaptcha" data-sitekey="" data-callback="enableButtonEnviar">
    </div>
    <button type="submit" disabled="disabled" class="btn btn-outline-primary btn-block btn-w-240 " id="Btn-enviar" data-dismiss="modal">
        Entrar
    </button>
</div>

但什么都不显示。在链接中说我需要把这个但我不知道放在哪里,如果我把它放在我的登录名中。ts 只显示验证码

import { Component } from '@angular/core';

@Component({
    selector: 'app',
    template: `
        <recaptcha
          [(ngModel)]="myRecaptcha"
          (scriptLoad)="onScriptLoad()"
          (scriptError)="onScriptError()"
        ></recaptcha>
    `
})
export class AppComponent {
    myRecaptcha: boolean

    onScriptLoad() {
        console.log('Google reCAPTCHA loaded and is ready for use!')
    }

    onScriptError() {
        console.log('Something went long when loading the Google reCAPTCHA')
    }
}

最佳答案

下面的实现给出了更多细节,并验证验证码响应是否在服务器端成功。

在模板驱动的表单中,添加对您的 recaptcha 元素的引用。

 <recaptcha
            [(ngModel)]="myRecaptcha"
              name="myRecaptcha"
              #recaptcha
              (scriptLoad)="onScriptLoad()"
              (scriptError)="onScriptError()"></recaptcha> 

现在将 recaptcha ref 传递给您的表单。就我而言。如下所示。

<form class="login-form mt-lg" role="form" (ngSubmit)="onForgot(recaptcha)" #loginForm="ngForm">

  <recaptcha
              [(ngModel)]="myRecaptcha"
              name="myRecaptcha"
              #recaptcha
              (scriptLoad)="onScriptLoad()"
              (scriptError)="onScriptError()"></recaptcha> 
</form>

在忘记.component.ts

export class ForgotComponent implements OnInit {
   onForgot(recaptcha: any) {

        console.log(recaptcha.recaptchaAPI.getResponse());

   }
}

getResponse() 将返回一个 token ,如果表单是从您的网站提交的,则可以验证该 token ,如下所示。

POST: https://www.google.com/recaptcha/api/siteverify

form-data 
secret: YOUR-RECAPTCHA-SECRET
response: above_received_token
remoteip: (optional)

如果请求实际上是由您的站点和用户发出的,则上述调用将返回状态。

{
   "success": true,
   "challenge_ts": "2018-08-15T02:47:46Z",
   "hostname": "localhost"
}

希望有用。

关于angular - Recaptcha google on angular 6 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51772565/

相关文章:

Android reCAPTCHA API : What's the point of validating the user token?

html - 尝试在样式中插入 typescript 元素时出现术语预期错误

javascript - typescript 循环结束时的回调

angular - iPhone X ionic 3应用程序中缺少Youtube控件

javascript - 未捕获的 URIError : URI malformed with reCAPTCHA

asp.net - Recaptcha 在 PostBack 期间消失

javascript - 无法在 JQuery Ajax 返回时刷新 reCaptcha

javascript - Angular2导出/下载json文件

javascript - Hook 到 Angular-CLI 生成的应用程序的引导过程

php - xhtml 过渡性 vs 严格性?