默认 (Auth.js) 认证提供者

默认的 (Auth.js) 认证提供者使用 Auth.js 和一个用户集合来对您的 TinaCMS 实例进行用户认证和授权。

入门

注意:如果您尚未设置自托管,我们建议使用 init backend 命令。有关更多信息,请参阅入门文档

要开始,您需要安装以下依赖项:

提示:在继续之前,请确保您已设置数据库适配器

更新您的 TinaCMS 配置

我们需要在 tina/config.{ts,js} 文件中添加认证提供者和一个用户集合。

TinaUserCollection 是一个特殊的集合,用于存储用户信息。此集合将从 content/users/index.json 文件中初始化,但当用户集合更新时,该文件不会被更新。这可以防止诸如密码等敏感信息被写入 Git 仓库。

添加种子数据

创建一个名为 content/users/index.json 的文件,其中包含初始种子用户:

登录后,您可以更新用户名和密码

更新 TinaCMS 后端

更新您的 /api/tina/[...routes].{ts,js} 文件以使用 Auth.js 后端。

测试

现在您已经设置了 Auth.js 认证提供者,可以进行测试。

本地测试认证

在您的 package.json 文件中添加以下脚本。

这将允许您在本地测试认证流程。

现在您可以打开浏览器并导航到 http://localhost:3000/admin/index.html,您应该会被重定向到登录页面。

更新您的密码

登录后,系统会提示您更新密码。这样做是为了防止密码以明文形式存储在您的仓库中。

管理用户

要添加其他用户,请导航到侧边栏中的用户集合以添加或编辑用户。有关更多详细信息,请参阅用户管理

配置其他 Auth.js 登录提供者

Auth.js 支持许多不同的登录提供者。在自托管时,可以通过一些配置更改来使用这些提供者中的任何一个。用户集合仍将用于授权,但登录流程将由登录提供者处理。

例如,我们可以配置 Discord OAuth 登录提供者。

更新您的 TinaCMS 配置

在这里,我们从 UsernamePasswordAuthJSProvider 切换到 DefaultAuthJSProvider。我们还重新定义了用户集合以移除密码字段,因为它不再需要。

更新种子数据

从种子数据中移除密码字段。

请注意,如果您的数据库中已经有用户,您也需要从中移除密码字段。

配置 Discord 登录提供者

我们需要将后端拆分为一个单独的端点,并在两者之间共享 AuthJS 选项。因此,在 /pages/api/tina/[...routes].{ts,js} 中,我们将有:

在这里,我们指定了 DiscordProvider。此外,请注意我们在选项中添加了一个 uidProp。这用于告诉 TinaCMS Discord 认证对象上的哪个属性具有用户的唯一标识符。如果您不确定这应该是什么,可以启用调试模式以查看认证对象。

接下来,我们需要为后端创建一个单独的端点。在 /pages/api/auth/[...nextauth].{ts,js} 中,我们将有:

请注意,这是从另一个端点导入的 NextAuthOptions。

配置 Discord OAuth 应用程序

要配置 Discord OAuth 应用程序,您需要在 Discord 开发者门户中创建一个新应用程序。

应用程序创建完成后,转到 OAuth2 选项卡并复制客户端 ID 和客户端密钥。这些将用作环境变量。为本地主机 http://localhost:3000/api/auth/callback/discord 和您的生产域添加重定向。

添加以下环境变量:

运行 yarn dev:prod 以在本地测试登录。