Next Auth v5未读取basePath求助:Azure AD登录路由异常
NextAuth v5 配置 basePath 解决路由不识别问题
针对你升级到NextAuth v5 beta.18后,配置basePath出现signin路由不读取basePath的问题,试试以下几个精准配置步骤:
修正next.config.js的basePath格式
Next.js的basePath要求是字符串类型,不是数组,先把配置改对:// next.config.js module.exports = { basePath: '/ui/abc', // 其他原有配置... }在auth.ts里正确配置basePath
NextAuth v5中,basePath要放在NextAuth初始化的顶层参数里,不是providers数组下方,示例如下:// auth.ts import NextAuth from "next-auth"; import AzureAD from "next-auth/providers/azure-ad"; export const { handlers, auth, signIn, signOut } = NextAuth({ providers: [ AzureAD({ clientId: process.env.AZURE_AD_CLIENT_ID, clientSecret: process.env.AZURE_AD_CLIENT_SECRET, tenantId: process.env.AZURE_AD_TENANT_ID, }), ], // 这里配置basePath,和next.config.js保持完全一致 basePath: "/ui/abc", // 可选:添加回调确保跳转URL自动带上basePath callbacks: { async redirect({ url, baseUrl }) { if (url.startsWith("/")) return `${basePath}${url}`; return url; }, }, });检查signIn的调用方式
调用signIn时别硬编码路径,直接用NextAuth提供的方法即可,它会自动拼接basePath:// 正确调用示例 await signIn("azure-ad"); // 需要指定回调URL的情况 await signIn("azure-ad", { callbackUrl: "/dashboard" });重启服务+清缓存
修改配置后,必须重启Next.js开发服务器,同时清掉浏览器缓存,避免旧路由缓存干扰。
如果还是不行,去Azure AD应用注册里检查重定向URI,要确保包含basePath,比如配置成https://你的域名/ui/abc/api/auth/callback/azure-ad,和实际回调路径完全匹配。
内容的提问来源于stack exchange,提问作者Vichu
相关产品推荐
相关产品推荐

