“认证提供者”一词指的是TinaCMS组件,用于处理自托管时用户的身份验证和授权。
Tina推荐的认证提供者基于Auth.js。它利用数据库中的用户集合来存储用户信息,并使用Auth.js API来处理身份验证和授权。通过利用Auth.js,你还可以轻松添加对任何Auth.js 登录提供者的支持,如Auth0、GitHub、Google等。
在自托管时,认证提供者在两个地方进行配置:
这是通过在defineConfig
中的authProvider
选项提供一个认证提供者来完成的。
示例:
import { UsernamePasswordAuthJSProvider } from 'tinacms-authjs/dist/tinacms'import { LocalAuthProvider } from 'tinacms'export default defineConfig({authProvider: isLocal? new LocalAuthProvider(): new UsernamePasswordAuthJSProvider(),//...})
/api/tina/[...routes].{ts,js}
import { TinaNodeBackend, LocalBackendAuthProvider } from '@tinacms/datalayer'import { TinaAuthJSOptions, AuthJsBackendAuthProvider } from 'tinacms-authjs'import databaseClient from '../../../tina/__generated__/databaseClient'const isLocal = process.env.TINA_PUBLIC_IS_LOCAL === 'true'const handler = TinaNodeBackend({authProvider: isLocal? LocalBackendAuthProvider(): AuthJsBackendAuthProvider({authOptions: TinaAuthJSOptions({databaseClient: databaseClient,secret: process.env.NEXTAUTH_SECRET,}),}),databaseClient,})export default (req, res) => {// 如果需要,可以在这里修改请求return handler(req, res)}
有关如何实现自己的认证提供者的更多信息,请参见自定义认证提供者。