首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >express-jwt中缺少"admin“属性

express-jwt中缺少"admin“属性
EN

Stack Overflow用户
提问于 2016-10-29 06:46:24
回答 1查看 499关注 0票数 0

我有一个带有express-jwt的nodejs express服务,它有一个受保护的api调用。

代码语言:javascript
复制
app.get('/protected',
  jwtCheck, function(req, res) {
    console.log(JSON.stringify(req.user));
    if (!req.user.admin)
      return res.send("user");
    res.send("admin");
});

问题是,req.user对象不包含"admin“字段。我已经在Auth0规则中添加了角色,所以我可以让它在我的客户机中工作,只是不能在nodejs服务器中工作。

我从这里开始学习教程:https://github.com/auth0/express-jwt

我是不是漏掉了什么?是否需要在auth0中设置规则才能添加管理字段?

编辑:在git问题中找到了这样的描述:“你的令牌需要包含信息(例如:角色)。为了在Auth0中这样做,你必须请求适当的范围,例如: scope=openid电子邮件角色。”现在,如何编辑express-jwt的作用域?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-11-04 18:44:43

您的req.user是否包含任何数据?

在描述中,它说:

“验证JsonWebTokens并设置req.user的中间件。”

这意味着当您在Authorization头中使用有效的jwt-token向服务器发出请求时,"express-jwt“库将对该令牌进行解码,并将其有效负载存储到"req.user”,以供后续中间件使用。Ie:此内标识:

代码语言:javascript
复制
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50aWQiOiIxIiwiaWQiOiIyMzQ0IiwidXNlcm5hbWUiOiInTWFjRyciLCJpYXQiOjE0NzgyNTI1MzIsImV4cCI6MTQ3ODI1NDUzMn0.T_vPE8_Y2JQF9Xq9L2jOdcDoZC7rdDJioFb0DaDe9Zk"

它解码为:

代码语言:javascript
复制
{
  "accountid": "1",
  "id": "2344",
  "username": "'MacG'",
  "iat": 1478252532,
  "exp": 1478254532
}

将导致

代码语言:javascript
复制
req.user = {
  "accountid": "1",
  "id": "2344",
  "username": "'MacG'",
  "iat": 1478252532,
  "exp": 1478254532
}

因此,如果您的令牌数据中没有admin参数,req.user.admin将是未定义的。在令牌数据包含参数“的情况下,管理员(即代码片段中的"admin“)只是一种误导性的示例,说明如何保护路径

如果您的req.user根本不包含任何数据,那么您可能以错误的顺序挂接了您的中间件函数。为此,您将不得不发布更多代码以进行调试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40314194

复制
相关文章

相似问题

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