Skip to content

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