返回

Cloudflare Turnstile 同步 API 调用:避免验证错误,增强应用程序安全性

vue.js

利用 Cloudflare Turnstile 同步 API 调用

简介

无交互式验证服务 Cloudflare Turnstile 已成为将 reCAPTCHA 迁移的热门选择。通过将 Turnstile 集成到您的应用程序中,您可以无缝验证人类访问者,增强您的网站安全性。然而,在这一过程中,您可能会遇到同步 API 调用的问题。

同步 API 调用:一个关键步骤

Turnstile 验证是一个异步过程,这意味着在执行 API 调用之前需要等待它完成。如果没有同步调用,您可能会遇到验证错误或 API 调用失败。

解决方案:利用 JavaScript Promise

JavaScript Promise 提供了一种解决异步操作同步的方法。当 Turnstile 初始化完成后,我们将使用 Turnstile 的 ready 方法触发回调函数。

步骤:

1. 初始化 Turnstile:

turnstile.ready(function () {
    // ...
});

2. 获取身份验证令牌:

getAuthenticationToken() {
    return new Promise((resolve) => {
        turnstile.render('#cf-container', {
            'sitekey': 'MY_TOKEN',
            'callback': function (token) {
                resolve(token);
            },
        });
    });
}

3. 同步 API 调用:

getAllBrands() {
    // ...
    getAuthenticationToken().then((token) => {
        ApiService.get({
            url: url,
            headers: {
                'Authorization': 'Bearer ' + token
            }
        }).then((response) => {
            // ...
        });
    });
}

注意事项:

  • 正确的授权标头: API 调用中应使用 Turnstile 提供的授权令牌。
  • 异步验证: 请务必考虑 Turnstile 验证的异步性质,并让调用等待验证完成。
  • 加载指示器: 您可以通过显示加载指示器来告知用户正在进行验证。

结论

通过同步 API 调用,您确保 Turnstile 验证完成前不会执行任何 API 调用,从而避免验证错误并增强应用程序安全性。遵循本文中的步骤,您可以顺利迁移到 Cloudflare Turnstile,确保您的 API 调用安全可靠。

常见问题解答

  • 如何解决 Turnstile 验证错误?
    • 确保正确同步 API 调用,并且验证已完成。
  • 如何使用加载指示器?
    • 使用 CSS 类 cf-spinner 向用户显示加载指示器。
  • Turnstile 令牌的有效期是多久?
    • 令牌的有效期取决于您的 Turnstile 配置。
  • 如何使用其他授权机制?
    • Turnstile 支持多种授权机制,具体取决于您的应用程序需求。
  • 是否存在 Turnstile 的替代方案?
    • reCAPTCHA v3 和 hCaptcha 是 Turnstile 的常见替代方案。