nodeJS中的JWT管理员角色检查
Posted
技术标签:
【中文标题】nodeJS中的JWT管理员角色检查【英文标题】:JWT admin role checking in nodeJS 【发布时间】:2018-10-26 19:10:03 【问题描述】:我如何检查数据修改(在网站上)是由用户还是由管理员创建的?
我正在使用 JWT、nodeJS、typescript(和 postman 进行测试)
这是我的“获取所有用户”方法:
用户架构:
export const userSchema = new Schema(
username: type: String, required: true, unique: true ,
firstName: type: String, required: true ,
lastName: type: String, required: true ,
email: type: String, required: true, unique: true ,
password: type: String, required: true ,
isAdmin: type: Boolean
用户路由:
public getAll = async (req: any, res: any) =>
try
const users = await User.find().exec();
res.status(200).json(users);
catch (err)
res.status(400).json(err);
我应该用一个条件来扩展它吗?
let user = await User.findById(req.params.id).exec();
if(user.isAdmin)
//CODE
else
res.status(400).json(err);
或者有什么更好的实现方式?谢谢
【问题讨论】:
【参考方案1】:您可以使用已实现的代码作为中间件。
代替:
在您的用户类中:
public IsAdmin(req: any, res: any, next: any)
//CODE GOES HERE
在您的路线文件中:
而不是这个:
app.get("/alluser", getall);
写这个:
app.use(User.IsAdmin);
app.get("/alluser", User.IsAdmin, User.getall);
app.use() 提供中间件将被调用。
【讨论】:
以上是关于nodeJS中的JWT管理员角色检查的主要内容,如果未能解决你的问题,请参考以下文章