【问题标题】:Invisible Google reCaptcha with AngularJS使用 AngularJS 隐藏 Google reCaptcha
【发布时间】:2017-08-15 05:05:51
【问题描述】:

我正在尝试在我的 AngularJS 网络应用程序中实现 invisible reCAPTCHA。根据他们的文档,我应该在登录表单的提交按钮中添加一个名为“data-callback”的属性。但是,我使用 ng-click 将 http 请求的功能附加到按钮。那么我应该在“data-callback”属性的值中添加什么?另外,我怎么知道recaptcha结果是否成功,并让g-recaptcha-response通过我的http请求发送到服务器?

https://developers.google.com/recaptcha/docs/invisible

【问题讨论】:

    标签: javascript angularjs recaptcha


    【解决方案1】:

    有一个角度包装器,但如果像我一样,你想使用原始的 JavaScript 库,这是怎么做的:

    data-callback 需要一个 java-script 全局函数,因此在 $scope 内使用函数将不起作用.. 我想出的解决方案是创建一个继承 angular 函数的全局函数。

    所以你应该这样做:

    $scope.login = function (token) {
      // your login logic
    }
    $window.login = $scope.login;
    

    并且不要忘记在你的作用域中注入 $window 作为依赖项。

    google 不可见的 reCaptcha 会向您发送一个令牌,以便您可以验证用户服务器端。

    在你的 html 中:

    <button class="g-recaptcha"
      data-sitekey="your_google_key_here"
      data-callback="login"
      data-size>
    Login
    </button>
    

    希望这会有所帮助。

    【讨论】:

    • 为了测试你应该绑定到 $window 而不是 window 本身。
    • 你说的很对,使用全局窗口对象直接导致可测试性问题,谢谢指出。
    • 一开始没用,是因为我没有注入$window作为依赖。谢谢!
    • 这看起来很有希望。我有点困惑。在此示例中,未调用 ng-click。应该是这样吗? 。或
    猜你喜欢
    • 2017-11-16
    • 2019-04-06
    • 2019-07-12
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多