自定义认证提供者
要使用自定义认证提供者进行自托管,您需要执行以下步骤。
1. 创建一个自定义认证提供者类
您可以通过扩展 AbstractAuthProvider 类并实现以下函数来实现:
必需的函数
authenticate: 当用户进入 /admin 且未登录时(由 getUser 确定)调用此函数。此函数应重定向用户到登录页面或执行任何必要的操作以认证用户。
getUser: 当用户进入 /admin 时调用此函数,用于确定用户是否已登录。如果返回一个真值,用户已登录。如果返回一个假值,用户未登录。
getToken: 当请求发送到 GraphQL 端点时调用此函数。它应返回一个带有 id_token 属性的对象。这将作为 Authorization 头以 Bearer <id_token> 格式传递。
logOut: 当用户点击注销按钮时调用此函数。
可选的函数
authorize: 当用户进入 /admin 且已登录时调用此函数。用于确定用户是否有权访问管理页面。如果返回一个真值,用户被授权。如果返回一个假值,用户未被授权。
getSessionProvider: 返回一个包裹 TinaCMS UI 的 React 上下文提供者。
现在您可以将自定义认证提供者添加到您的配置文件中:
2. 将认证添加到 TinaCMS 后端
TinaNodeBackend 接受一个 authProvider 属性。
此接口必须传递给 TinaNodeBackend 的 authProvider 属性。您可以通过调用 req.headers.authorization 从请求中获取令牌。此令牌应在 isAuthorized 函数中进行验证。
有关如何执行此操作的示例,请参见 Auth.js 后端。
一旦您创建了一个实现 BackendAuthProvider 接口的对象,您可以将其传递给 TinaNodeBackend 的 authProvider 属性。
/pages/api/tina/[...routes].{ts,js}