Next.js集成NextAuth与Cognito:如何跳过登录跳转直接进入表单
解决Next-auth集成Cognito直接跳转登录表单的问题
不用在AWS控制台瞎找了,问题出在NextAuth的Cognito Provider配置上,默认的授权跳转URL会带身份提供商选择步骤,直接改配置就能跳过:
- 打开你的
[...nextauth].js/ts配置文件 - 在CognitoProvider的配置项里,新增
authorization字段,手动构造授权URL并添加强制登录的参数:
import NextAuth from "next-auth"; import CognitoProvider from "next-auth/providers/cognito"; export default NextAuth({ providers: [ CognitoProvider({ clientId: process.env.COGNITO_CLIENT_ID, clientSecret: process.env.COGNITO_CLIENT_SECRET, issuer: process.env.COGNITO_ISSUER, // 关键:手动指定授权URL,跳过选择页直接进登录表单 authorization: { url: `${process.env.COGNITO_ISSUER}/oauth2/authorize`, params: { prompt: "login", // 强制显示登录界面,跳过选择环节 response_type: "code", client_id: process.env.COGNITO_CLIENT_ID, redirect_uri: `${process.env.NEXTAUTH_URL}/api/auth/callback/cognito`, }, }, }), ], });
- 额外注意:如果你的Cognito用户池同时启用了多个身份提供商(比如Google+本地账号),可以在params里再加
identity_provider=Cognito,强制走本地账号登录流程;如果只启用了Cognito作为唯一身份源,不加这个参数也能生效
重启项目后再触发登录,就能直接跳转到Cognito的登录表单,不会再看到那个多余的按钮页面了。
内容的提问来源于stack exchange,提问作者Facu Bozzi
相关产品推荐
相关产品推荐

