缺少“admin"express-jwt中的属性
Missing "admin" property in express-jwt
我有一个nodejs express服务express-jwt与一个受保护的api调用。
app.get('/protected',
jwtCheck, function(req, res) {
console.log(JSON.stringify(req.user));
if (!req.user.admin)
return res.send("user");
res.send("admin");
});
问题是,要求。User对象不包含admin字段。我已经在Auth0规则中添加了角色,所以我可以让它在我的客户端工作,而不是在nodejs服务器中。
我从这里开始学习教程:https://github.com/auth0/express-jwt
我错过了什么吗?我是否需要在auth0中设置一个规则,以便添加admin字段?
编辑:在一个git问题中发现了这个描述:您的令牌需要包含信息(例如:角色)。为了使用Auth0做到这一点,您必须请求适当的范围,例如:scope=openid email roles。"现在,如何编辑express-jwt的作用域?
提前感谢!
您的要求。用户包含任何数据?
在描述中说:
"验证JsonWebTokens并设置request .user的中间件。"
这意味着当您在授权头中使用有效的jwt-令牌向服务器发出请求时,"express-jwt"库将解码该令牌并将其有效负载存储到"req"。为以下中间件使用。例如:this token:
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50aWQiOiIxIiwiaWQiOiIyMzQ0IiwidXNlcm5hbWUiOiInTWFjRyciLCJpYXQiOjE0NzgyNTI1MzIsImV4cCI6MTQ3ODI1NDUzMn0.T_vPE8_Y2JQF9Xq9L2jOdcDoZC7rdDJioFb0DaDe9Zk"
解码为:
{
"accountid": "1",
"id": "2344",
"username": "'MacG'",
"iat": 1478252532,
"exp": 1478254532
}
将导致
req.user = {
"accountid": "1",
"id": "2344",
"username": "'MacG'",
"iat": 1478252532,
"exp": 1478254532
}
所以,如果您的令牌数据中没有admin参数,req.user.admin将是未定义的。也就是说,如果令牌数据包含参数"admin"
,那么您所引用的代码片段中的"admin"只是一种误导性的示例,说明如何保护路由。如果你的要求。用户根本不包含任何数据,您可能以错误的顺序连接中间件函数。因此,您将不得不发布更多的代码进行调试。
相关文章:
- 使用Express捕获参数
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 缺少Express JS-jwt符号exp
- 无法读取未定义的属性 - NodeJS,Express,Mongoose
- Express和Typescript-Error.stack和Error.status属性不存在
- express-jwt 无法从路由目录访问 req.user
- 如何更改 NodeJS、Express、Passport 中输入字段的名称属性
- Node,Express,Swig Template-HTML属性中的变量
- express主体解析器中间件将数据放入属性名称中
- 将JavaScript属性传递给变量-Node/Express
- 缺少“admin"express-jwt中的属性
- 当通过NodeJS/Express服务器上的jQuery Ajax调用发送到客户端时,服务器上JS对象上动态创建的属性会
- Express-hbs:带有选项/属性的异步Helper
- 添加自定义属性到Express应用程序和请求.最好的方法是什么?
- 如何将额外的req.body属性添加到实际的post请求中,然后用express重定向
- Express/Node.js中呈现MySQL结果:无法分配给只读属性'_当地人'
- Express.js和connect-mongo-session"TypeError:无法读取属性'混
- Express 500 类型错误:无法读取未定义的属性“get”
- 如何使用ngResource将JWT令牌从Express获取到Angular
- 类属性未更新[express]