gpt4 book ai didi

javascript - 在 auth0 中获取 accessToken

转载 作者:行者123 更新时间:2023-12-05 01:08:09 26 4
gpt4 key购买 nike

我正在使用 auth0nextJS

我接下来要做的是:当用户添加他的凭据并登录时,他将被重定向到 callback API。

这里

    import auth0 from '../../utils/auth0';

export default async function callback(req, res) {
try {
await auth0.handleCallback(req, res, {
redirectTo: '/'
});
} catch (error) {
console.error(error);
res.status(error.status || 400).end(error.message);
}
}

我想根据 token 重定向用户。
如果应用程序是简单的用户或管理员,我会解码 token 。

如果他是管理员,如果不是用户页面,他应该被重定向到管理页面。

所以我做了这样的事情:

    import auth0 from '../../utils/auth0';

export default async function callback(req, res) {
const tokenCache = auth0.tokenCache(req, res);
const { accessToken } = await tokenCache.getAccessToken();
console.log(accessToken)
try {
await auth0.handleCallback(req, res, { redirectTo: '/' });
} catch (error) {
console.error(error);
res.status(error.status || 400).end(error.message);
}
}

所以我想在这个函数中获取 token ,以便能够在不同的页面上重定向用户,但是如果我想在这里获取 token ,我会遇到问题:

The user does not have a valid session.

如果我删除与用户被重定向的 token 相关的代码,但我需要在此处获取 token 才能对用户进行检查。

我怎样才能在这个 callback 函数中获取 token 并实现我上面描述的?

最佳答案

使用 nextjs-auth0 的 v1.2.0库,您可以在 callback handler 期间访问身份 token .

import { handleAuth, handleLogin, handleCallback } from '@auth0/nextjs-auth0';

const afterCallback = (req, res, session, state) => {
console.log(session.idToken);
if (!session.user.isAdmin) {
throw new UnauthorizedError('User is not admin');
}
return session;
}

export default handleAuth({
async callback(req, res) {
try {
await handleCallback(req, res, { afterCallback });
} catch (error) {
res.status(error.status || 500).end(error.message);
}
}
});

session variable afterCallback

但是,请记住,您通常应该 avoid looking inside the access token由客户端应用程序。如果您需要将用户信息传递给客户端,则应将其放在 id_token 中。访问 token 供 API 使用,您的客户端应用程序不应依赖于其内容格式或语义,因为访问 token 的设计没有定义格式。

关于javascript - 在 auth0 中获取 accessToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66410826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com