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() 提供中间件将被调用。
如何检查数据修改(在网站上)是由用户还是管理员创建的?
我正在使用 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() 提供中间件将被调用。