Next.js部署AWS Amplify后NextAuth Signout()重定向至localhost:3000问题
解决Next.js + AWS Amplify登出重定向到localhost的问题
强制覆盖NextAuth的回调与Cookie配置
在pages/api/auth/[...nextauth].ts(或js)的authOptions里,显式配置signOut回调、默认callbackUrl以及生产环境的Cookie规则,彻底替换localhost相关的残留配置:export const authOptions: NextAuthOptions = { // 你的其他认证配置(MongoDB等) callbacks: { async signOut({ callbackUrl }) { // 强制使用生产地址作为登出回调 return process.env.APP_URL || callbackUrl; }, async session({ session }) { // 确保session中的地址为生产地址 session.url = process.env.APP_URL; return session; }, }, // 全局设置默认回调地址 callbackUrl: process.env.APP_URL, // 配置Cookie,避免localhost残留 cookies: { callbackUrl: { name: `${process.env.NODE_ENV === 'production' ? '__Secure-' : ''}next-auth.callback-url`, options: { domain: process.env.APP_URL?.replace(/^https?:\/\//, ''), path: '/', secure: process.env.NODE_ENV === 'production', httpOnly: true, sameSite: 'lax', }, }, }, };清除部署与浏览器缓存
- 在AWS Amplify控制台找到对应应用,选择最新部署记录,点击「重新部署此版本」并勾选「清除构建缓存」,确保构建时没有残留旧配置
- 前端用户端强制刷新页面(Ctrl+Shift+R),并手动删除浏览器中该网站的
next-auth.callback-url等相关Cookie
确认Amplify环境变量的构建阶段注入
检查Amplify的环境变量设置,确保APP_URL和NEXTAUTH_URL是添加到构建变量中,而非仅运行时变量。Next.js在构建时会静态注入环境变量,运行时变量无法覆盖NextAuth的初始配置逻辑。显式指定SignOut的callbackUrl
调用signOut函数时务必显式传入生产地址,避免依赖可能被缓存的默认值:await signOut({ callbackUrl: process.env.APP_URL });
内容的提问来源于stack exchange,提问作者João Textor
相关产品推荐
相关产品推荐

