常见的CMS角色和访问级别

17

我目前正在编写一款CMS,并记得有人(可能是在这里)批评现有的CMS没有足够强大的用户权限系统。我已经制定了一种方法,但我觉得它已经陷入了通常会过于详细的陷阱,这使得最终用户难以理解和实施。

我认为拥有一系列带有权限的默认用户角色将是解决这个问题的答案,因此我的问题是:

您希望在CMS中看到哪些默认角色,以及这些角色将与哪些权限相关联?

提前感谢!

9个回答

26

这是我在大多数项目中最终采用的“最佳实践”,我非常满意:

1. 角色

对于角色,我建议灵活性非常高,即能够自由创建和定义用户帐户和组(像“贡献者”,“管理员”等角色不是硬编码的,而是放入可以根据应用程序更改的配置文件中)。角色配置对用户不可见,但引擎本身应该没有硬编码的角色。

2. 权限

权限是需要易于理解和实现的地方。

我很好地使用了代码/ API级别的非常细粒度的权限(并进行检查):

  • 查看
  • 浏览
  • 编辑
  • 更改名称
  • 重命名
  • 删除
  • 移动
  • 更改权限
  • 等等

用户从未看到过这些。对于他们,它们被分组成非常少量的“权限组”:

  • 只读
  • 编辑
  • 管理=移动、重命名...

用户从未看到“移动”权限,只看到“管理”权限组。

这样,您就可以保留代码中非常细粒度权限的全部功能,以备将来使用 - 您可以轻松适应类似于“实习生必须能够编辑页面,但不能更改页面标题,也不能删除它们”的规则,为CMS添加有价值的资产。对于最终用户,此功能仍然不可见,并且权限系统易于使用。


“正确”的群组是什么?在我看来,除了列出的三个之外,还有更多的群组。 - orangepips
@orangepips 抱歉,我想应该是“权益组织”。这个想法是,你可以根据需要创建角色,并为这些角色提供特定的权限。比如说,“编辑”角色具有编辑、创建和移动内容的权限,但不能进行任何高级管理操作。 - Pekka
真遗憾啊 : )。我正在寻求一个意见,以便在向用户公开一组有用的群组时做出决策。虽然我同意列出的三个,但我觉得还有几个需要确定。 - orangepips

20

之前提出了这个问题,并获得了以下回答。

admin           //Manage everything
manager         //Manage most aspects of the site
editor          //Scheduling and managing content
author          //Write important content
contributors    //Authors with limited rights
moderator       //Moderate user content
member          //Special user access
subscriber      //Paying Average Joe
user            //Average Joe

8

您是否研究过像RBAC这样的现有解决方案?虽然这样的系统很可能对于您尝试解决的特定问题来说过于复杂,但它至少可以帮助增强您正在正确的轨道上。

除此之外,我预期的一般角色应该是:

管理员 - 对系统拥有完全控制权,可以查看日志(因为您应该记录所有更改),等等,还可以...

发布者 - 可以将内容发布到线上,还可以...

作者 - 可以创建内容

然而,如何在整个系统中应用这些角色是棘手的,因为特定用户可能对不同的内容区域/模块具有不同的权限。


你忘记了“管理员”吗?管理员可以控制用户。 - Strae
1
谁来监督管理员们呢? ;) - Meep3D
5
Jon Skeet? ;) 可以翻译为“Jon Skeet?;)”,意思是询问或者表示对Jon Skeet的提到或关注。 - MaxVT
谁是Jon Skeet? - Dawesi
@Dawesi :O 安全! - akinuri

5
对于大多数应用程序,我认为它对CMS同样适用,我的客户通常更喜欢一种以权限为导向的方法。以下是具体操作方式:
  1. 列出主要操作。在您的CMS中,这将包括:创建和编辑内容;删除内容;分类/归类内容;验证内容;发布内容;管理用户;等等。
  2. 为每个用户定义允许或拒绝的操作。
为了更好地处理,您可以创建多个角色(编辑者;管理员),以便在选择角色时更轻松地预填充表格,从而使典型用户的创建更容易。

2
我有一个基于Zend Framework的自定义CMS,使用Zend的ACL来扩展一些基本角色(因此您可以拒绝特定用户的资源访问或允许其他人访问他们通常无法访问的资源)。我的基本角色从CMS用户一直到网站“成员”,如下所示(我只使用一个用户表存储所有身份验证)。 开发人员 编辑任何内容、编辑布局、设置、配置。使用可以调用shell脚本并强制执行cron作业的特殊工具。 管理员 编辑任何内容、编辑布局、设置。 作者 编辑内容。 成员 可以查看登录屏幕、忘记密码和错误报告。
现在,Zend有一个很好的ACL实现,因此您可以轻松地扩展您的基本ACL类,并添加从基本角色扩展的新角色。因此,我可能会创建一个“管理员”,他可以访问其中一个开发人员工具(例如清除缓存或管理),或者将作者锁定为仅能管理博客(而不是新闻等)。

2

我不会轻易地否认你现有的细粒度控制系统。如果你拥有一个可适应的系统,重点是通过提供简化的接口(例如使用外观模式或适配器模式)来隐藏复杂性。好处是你可以为用户提供简化版本(例如简单的权限,如“管理员”可以“删除”“帖子”),同时仍然保留细粒度功能,以便以后需要时使用(例如更复杂的权限处理是允许在类别X中删除自己的帖子)。然后你可以在某些地方为该需求提供简化版本的替代方案。


2

管理员:拥有所有权限的人。

作者:拥有特定内容(如博客作者拥有自己的博客)的所有权,也有权限添加/邀请用户进行协作/查看内容。

协作者:可以编辑/添加作者授予权限的内容,但不能删除内容或邀请/添加更多的协作者。

查看者:如果作者邀请查看,则可以查看内容。

编辑者:可以审核/编辑所有类型的内容。

对于预计高级用户/开发人员使用CMS的情况,细粒度的控制并不是一个坏主意。但对于新手CMS管理员来说,基本角色使系统更加易用。


1

管理员 - 可以创建用户 + 所有以下权限

编辑 - 可以编辑他人的帖子 + 所有以下权限

作者 - 可以撰写帖子,编辑自己的帖子


1
这取决于CMS和需求。我将在管理员下面添加一个更多的选项 -> 设计师 - 可以更改布局\模板 + 所有以下内容。 - dariol

0

创建者-负责创建和编辑内容。

编辑-负责调整内容消息和交付方式的风格,包括翻译和本地化。

发布者-负责发布可供使用的内容。

管理员-负责管理对文件夹和文件的访问权限,通常通过为用户组或角色分配访问权限来完成。

消费者、观众或访客-在内容被发布或共享后阅读或吸收内容的人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接