nodeJS 中的 JWT 管理员角色检查

JWT admin role checking in nodeJS

如何检查数据修改(在网站上)是由用户还是管理员创建的?

我正在使用 JWT、nodeJS、typescript(和 postman 进行测试)

这是我的"get all user"方法:

用户架构:

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);
}

或者有更好的实现方式吗?谢谢

您可以使用已实现的代码作为中间件。

而不是:

在您的用户中 class:

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() 提供中间件将被调用。