我正在尝试使用 nextjs/auth0 库。 NextJs 版本是 13.4.19,而 auth0 lib 版本是 3.1.0。 我已经完成了基本的身份验证。现在,我正在尝试做的事情如下: 如果用户的电子邮件 ID 未经过验证,我想将用户重定向到其他页面 - /verify-email。如果电子邮件 ID 已验证,用户应被重定向到 /dashboard 我想到为此使用callbackHandler。我按照给定的示例进行操作,但它没有按预期工作。
我的代码如下
export const GET = handleAuth({
callback: async (req: NextApiRequest, res: NextApiResponse) => {
try {
return await handleCallback(req, res, {
afterCallback
});
} catch (error) {
console.error(error);
}
}
})
我的回调方法是
const afterCallback = async (req: NextApiRequest, res: NextApiResponse, session: Session) => {
console.log('I am getting called after callback', session)
if (session.user) {
// permanentRedirect('/verify-email')
// res.status(200).redirect('/verify-email')
console.log('user found', session.user)
} else {
console.log('user not found', session)
}
return session;
};
但是,我在这里没有看到任何会话详细信息。它只是打印
I am getting called after callback { returnTo: 'http://localhost:3000' }
user not found { returnTo: 'http://localhost:3000' }
我不确定这里出了什么问题。我期待看到会议的详细信息。我打算使用 session.user.email_verified 来执行检查。
我感到困惑的另一件事是 - 传递给 handleLogin 的 LoginOption 的 returnTo 属性。根据文档,
its URL to return to after login. Overrides the default in {@link BaseConfig.baseURL}.
callbackUrl 不就是这个意思吗(再次按照文档 - A callback URL is a URL in your application where Auth0 redirects the user after they have authenticated
)。
我对两者感到困惑 - 何时使用哪个以及它们的价值分别是什么。如果我不设置 returnTo
我将返回主屏幕 http://localhost:3000
这里需要一些指示,因为我已经在这个问题上坚持了一个星期了:皱眉:。 TIA
我遇到了类似的问题,并通过修改传递给
afterCallback
函数的参数来解决它。
根据我的观察,
afterCallback
函数不接受
使用 App Router 时的response
参数。
const afterCallback = async (req: NextApiRequest, session: Session) => {
// Your code here
}