首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取accessToken in auth0

获取accessToken in auth0
EN

Stack Overflow用户
提问于 2021-02-28 15:42:26
回答 2查看 3.8K关注 0票数 3

我使用的是auth0nextJS

我想做的下一步是:当用户添加他的凭据并登录时,他被重定向到callback API。

还有这里

代码语言:javascript
复制
    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);
      }
    }

我想根据令牌重定向用户。

解码令牌,如果应用程序是一个简单的用户或管理员,我将得到数据。

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

所以我做了这样的事:

代码语言:javascript
复制
    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);
      }
    }

因此,我希望在这个函数中获得令牌,以便能够在不同的页面上重定向用户,但是如果我想在这里获得令牌,就会遇到以下问题:

用户没有有效的会话。

如果我删除与令牌相关的代码,用户将被重定向,但我需要在这里获得令牌,以便能够对用户进行检查。

我如何才能在这个callback函数中获得令牌,并实现我前面所描述的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-24 19:15:41

使用nextjs-auth0库的v1.2.0,您可以在回调处理程序期间访问标识令牌。

代码语言:javascript
复制
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);
        }
    }
});

但是,请记住,通常您应该通过客户端应用程序进行避免查看访问令牌内部。如果需要将用户信息中继到客户端,则应将其放置在id_token中。访问令牌供API使用,客户端应用程序不应依赖于其内容格式或语义,因为设计中的访问令牌没有定义的格式。

票数 7
EN

Stack Overflow用户

发布于 2022-03-11 02:58:00

代码语言:javascript
复制
export default async function callback(
  req: NextApiRequest,
  res: NextApiResponse
) {
  try {
    await auth0.handleCallback(req, res, {
      async afterCallback(req, res, session, state) {
        return session;
      },
    });
  } catch (error) {
    res.status(error.status || 500).end(error.message);
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66410826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档