NextJS/auth0 - 自定义回调处理程序无法按照记录的示例工作

问题描述 投票:0回答:1

我正在尝试使用 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

next.js auth0 next.js13
1个回答
0
投票

我遇到了类似的问题,并通过修改传递给

afterCallback
函数的参数来解决它。

根据我的观察,

afterCallback
函数不接受

使用 App Router 时的

response
参数。

const afterCallback = async (req: NextApiRequest, session: Session) => {
  // Your code here
}
© www.soinside.com 2019 - 2024. All rights reserved.