我想要创建一个系统,其中可能有4-5种类型的用户组,可以访问某些东西。权限越高,他们可以做的就越多。这对我来说很简单,但对我来说,最困难的部分是建立一个制度,让更高级别的人可以做任何低级的事情,但下级不能做到更高级别的人所能做的事情。
我在想这样的事情:
if (user.group === "mod" || user.group === "admin"){
// do stuff
if (user.group === "admin"){
// do stuff
}
}不过,似乎有一种更容易的方法。
发布于 2014-08-01 11:53:12
为什么不试试开关语句呢?
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大小写和一个用例,默认情况下一个mod大小写也会触发一个用例等等。
发布于 2014-08-01 11:56:56
您可以引入一组权限,比如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
}https://stackoverflow.com/questions/25079488
复制相似问题