首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建基于权限的系统

创建基于权限的系统
EN

Stack Overflow用户
提问于 2014-08-01 11:42:54
回答 2查看 143关注 0票数 0

我想要创建一个系统,其中可能有4-5种类型的用户组,可以访问某些东西。权限越高,他们可以做的就越多。这对我来说很简单,但对我来说,最困难的部分是建立一个制度,让更高级别的人可以做任何低级的事情,但下级不能做到更高级别的人所能做的事情。

我在想这样的事情:

代码语言:javascript
复制
if (user.group === "mod" || user.group === "admin"){
  // do stuff
  if (user.group === "admin"){
     // do stuff
  }
}

不过,似乎有一种更容易的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-01 11:53:12

为什么不试试开关语句呢?

代码语言:javascript
复制
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大小写也会触发一个用例等等。

票数 0
EN

Stack Overflow用户

发布于 2014-08-01 11:56:56

您可以引入一组权限,比如PERMISSION_TO_DO_THING1,等等。接下来是角色,比如ROLE_ADMINROLE_SPECIAL_GUY等等。每个角色都是一组权限。只需注意,更高的角色包含低角色可以执行的所有必要权限。这是合乎逻辑的事情,这取决于您的应用程序和实现。总之,最终你需要一些像userHasPermission(user, permission)这样的方法,如果它是true --他可以做一些事情。

代码语言:javascript
复制
if (userHasPermission(user, PERMISSION_TO_ADD_USER)) {
    // do things
}

if (userHasPermission(user, PERMISSION_TO_DELETE_USER)) {
    // do things
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25079488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档