注册 Cloudflare Turnstile 并将其集成到 AXUM 应用中

本章将讨论注册 Cloudflare Turnstile 并将其集成到 AXUM 应用中。

和 Google reCaptcha 以及 hCaptcha 类似,Cloudflare Turnstile 也是用于人机验证的,和前两者不同的是,Turnstile 不再要求用户完成各种奇奇怪怪的挑战,而是利用自身的算法,「无感」的进行人机验证,用户体验提升非常大。

注册 Turnstile

登录到 Cloudflare 用户面板,依次点击:Turnstile - Add widget,如下图:

turnstile-1

输入名字,然后依次进行如下操作:点击 Add Hostnames - 选择要添加的域名 - 点击 Add 按钮。如下图:

turnstile-2-1

之后,点击页面右下角的 Create 按钮:

turnstile-2-2

然后你将看到成功页面。该页面显示了 Site Key 和 Secret Key。需要把它们复制保存起来,后面将会用到。

turnstile-3

Turnstile 的两个 Key

注册之后,我们会得到两个 Key,它们的作用分别是:

  • Site Key:用于客户端,在显示人机验证小部件时使用
  • Secret Key:用于服务端,在进行人机验证合法性校验时使用

本地开发

注册时生成的两个 Key 不能直接用于本地开发,因为它们和域名绑定。除非你使用某些技术,将本地开发环境绑定到注册 Turnstile 时添加的域名。相比来说,使用 Turnstile 提供的测试 Key 会简单很多。以下是 Turnstile 的测试 Key:

  • Site Key:1x00000000000000000000AA
  • Secret Key:1x0000000000000000000000000000000AA

将 Turnstile 集成到 AXUM 应用中

结构体 Response

#[derive(Deserialize)]
pub struct Response {
    pub success: bool,
}

向 Turnstile 服务器请求验证

集成多种人机验证

AXUM 中文网集成了 Turnstile 和 hCaptcha 两种人机验证,如果你有兴趣,可以查看源码。本项目没有这种需求。

将 Turnstile 集成到项目前端

由于我们前端使用 React 构建,已经有封装好的组件供我们直接使用了。如果你想了解最原始的集成方式,可以查看官方文档

说明:本章代码只是当前状态,后续章节可能会对配置、数据库定义、模型定义、结构体定义、函数定义等进行修改,请留意。

本章代码位于04.注册Turnstile并集成到AXUM中分支。

要查看完整内容,请先登录