NextAuth.js 配置子域名
官方文档
查看 cookies 文档 了解更多。
NextAuth.js 默认不支持子域名,但是可以通过配置 cookies
选项来实现。其中 useSecureCookies
变量用于判断是否使用安全的 cookies,一般在 HTTPS 环境下使用,非 HTTPS 环境下不需要。
保存 api/auth/[...nextauth].ts
:
ts
import NextAuth from 'next-auth'
import GitHubProvider from 'next-auth/providers/github'
const useSecureCookies = !!process.env.VERCEL_URL
export default NextAuth({
providers: [
GitHubProvider({
clientId: process.env.GITHUB_ID as string,
clientSecret: process.env.GITHUB_SECRET as string,
}),
],
secret: process.env.SECRET as string,
cookies: {
sessionToken: {
name: `${useSecureCookies ? '__Secure-' : ''}next-auth.session-token`,
options: {
httpOnly: true,
sameSite: 'lax',
path: '/',
domain: '.solutions-subdomain-auth.vercel.sh',
secure: useSecureCookies,
},
},
},
})
可以克隆 官方示例 来查看完整的配置。
bash
pnpm create next-app --example https://github.com/vercel/examples/tree/main/solutions/subdomain-auth subdomain-auth
cd subdomain-auth
pnpm dev