我想创建一个系统,其中可能有4-5种类型的用户组可以访问某些内容。权限越高,他们就越能做到。这对我来说很简单,但对我来说很难的是创建一个系统,在这个系统中,较高级别的队伍可以做任何较低级别的事情,但是较低的级别不能做更高级别的队伍。
我在想这样的事情:
if (user.group === "mod" || user.group === "admin"){
// do stuff
if (user.group === "admin"){
// do stuff
}
}
似乎有一种更简单的方法可以做到这一点。
答案 0 :(得分:0)
为什么不试一下switch语句?
switch(user.group) {
case 'admin':
// admin permissions
case 'mod':
// admin permission (waterfall effect)
// mod permission
case 'user':
// admin permission (waterfall effect)
// mod permission (waterfall effect)
// user permissions
default:
// default permissions;
break;
}
我不知道为什么这不起作用。
基本上,通过不向每个开关添加break
,管理案例也会触发mod案例和用户案例,默认情况下还会触发用户案例等等。
答案 1 :(得分:0)
您可以引入一组权限,例如PERMISSION_TO_DO_THING1
等。下一步 - 角色,如ROLE_ADMIN
,ROLE_SPECIAL_GUY
等。每个角色都是一组权限。请注意,较高的角色包含较低角色可以执行的所有必要权限。这是合乎逻辑的事情,它取决于您的应用程序和实现。无论如何,最后你需要一些像userHasPermission(user, permission)
这样的方法,如果它是true
- 他可以做的事情。
if (userHasPermission(user, PERMISSION_TO_ADD_USER)) {
// do things
}
if (userHasPermission(user, PERMISSION_TO_DELETE_USER)) {
// do things
}