假设我有一个用于发布新用户的端点,其逻辑如下: ... user = new User(_.pick(req.body, ['name', 'email', 'password', 'isAdmin'])); const salt = await bcrypt.genSalt(10); user.password = await bcrypt.hash(user.password, salt); await user.save(); const token = user.generateAuthToken(); ...这可行,但现在当然每个用户都可以设置该isAdmin标志。另一种方法是将管理员用户手动添加到数据库中,但这可能不是最好的方法。有推荐的方法来解决这个问题吗?
2 回答
慕田峪7331174
TA贡献1828条经验 获得超13个赞
您可以执行以下操作:
第 1 步:superadmin
手动创建一个给isAdmin
= 2
步骤2:以上创建的superadmin
只能添加/注册子管理员,给isAdmin
= 1
步骤 3:最后,从正常注册中,您可以给出isAdmin
= 0
so isAdmin
= 2(超级管理员),isAdmin
= 1(子管理员)和isAdmin
= 0(普通用户)
注意:2,1 值isAdmin
是我的建议,您可以根据需要进行更改。
白衣非少年
TA贡献1155条经验 获得超0个赞
您可以在数据库中手动添加超级管理员用户(例如级别 0),或使用JS脚本(node initDb.js
例如)。
然后,每当一个用户想要添加另一个用户时,您只需检查他是否没有添加具有相同权限的用户,每个用户只能添加一个具有n + 1
. 这样,超级管理员用户将能够使用level >= 1
、 等添加用户。
添加回答
举报
0/150
提交
取消