创建基于权限的系统

时间:2014-08-01 11:42:54

标签: javascript node.js permissions

我想创建一个系统,其中可能有4-5种类型的用户组可以访问某些内容。权限越高,他们就越能做到。这对我来说很简单,但对我来说很难的是创建一个系统,在这个系统中,较高级别的队伍可以做任何较低级别的事情,但是较低的级别不能做更高级别的队伍。

我在想这样的事情:

if (user.group === "mod" || user.group === "admin"){
  // do stuff
  if (user.group === "admin"){
     // do stuff
  }
}

似乎有一种更简单的方法可以做到这一点。

2 个答案:

答案 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_ADMINROLE_SPECIAL_GUY等。每个角色都是一组权限。请注意,较高的角色包含较低角色可以执行的所有必要权限。这是合乎逻辑的事情,它取决于您的应用程序和实现。无论如何,最后你需要一些像userHasPermission(user, permission)这样的方法,如果它是true - 他可以做的事情。

if (userHasPermission(user, PERMISSION_TO_ADD_USER)) {
    // do things
}

if (userHasPermission(user, PERMISSION_TO_DELETE_USER)) {
    // do things
}