17

我目前正在编写一个 CMS,并记得有人(它可能在这里)批评现有的 CMS 没有足够强大的用户权限系统。我已经计划好了一个方法,但我觉得它已经落入了一个过于细粒度的通常陷阱,这使得最终用户对它的理解和实施感到恐惧。

我认为拥有一系列具有权限的默认用户角色将是对此的答案,所以我想我的问题是:

您希望在 CMS 中看到哪些默认角色以及与这些相关的权限类型?

提前致谢!

4

9 回答 9

26

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

1. 角色

在角色方面,我建议具有很大的灵活性,即能够自由创建和定义用户帐户和组(“贡献者”、“管理员”等角色不是硬编码的,而是放入一个配置文件中,可以每个应用程序更改)。用户无法访问角色配置,但引擎本身应该没有硬编码的角色。

2. 权利

权利是事情需要易于理解和实施的地方。

在代码/API级别上使用和检查非常细粒度的权限方面取得了非常好的经验:

  • 看法
  • 编辑
  • 更换名字
  • 改名
  • 删除
  • 移动
  • 改变权利
  • 等等

用户永远不会看到那些。对他们来说,他们被分成极少数“正确的群体”:

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

用户永远不会看到“移动”权限,而只能看到“管理”权限组。

这样,您就可以在未来的代码中保留完整的细粒度权限- 例如,您可以轻松适应“实习生必须能够编辑页面,但不能更改其标题,也不删除它们”,为 CMS 添加了宝贵的资产。对于最终用户而言,此功能仍然是不可见的,并且权限系统易于使用。

于 2009-12-07T15:31:19.917 回答
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
于 2009-12-11T18:24:05.550 回答
8

您是否研究过像RBAC这样的现有解决方案?虽然这样的系统很可能对于你试图破解的特定坚果来说是完全矫枉过正的,但它至少有助于增强你在正确轨道上的信心。

除此之外,我期望的一般角色将是:

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

发布者- 可以将内容直播加...

作者- 可以创建内容

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

于 2009-07-28T12:18:58.020 回答
5

对于大多数应用程序,我认为对于 CMS 也是如此,我的客户通常更喜欢面向权限的方法。这是怎么回事:

  1. 您列出主要行动。在您的 CMS 中:创建和编辑内容;删除内容;对内容进行分类/分类;验证内容;发布内容;管理用户;等等。
  2. 您定义每个用户允许或拒绝哪些操作

为了让事情变得更好,您可以创建多个角色(编辑者;管理员)以使典型用户的创建更容易(通过在选择角色时预先填写表单)。

于 2009-12-07T15:52:24.037 回答
2

我有一个基于 Zend 框架的自定义 CMS,它使用 Zend 的 ACL 来扩展一些基本角色(因此您可以专门为其他用户拒绝资源或允许其他人访问他们通常无法访问的资源)。我的基本角色从 CMS 用户一直到网站“成员”,如下所示(我只使用一个用户表来存储我的所有身份验证)。

开发商

编辑任何内容、编辑布局、设置、配置。使用可以调用 shell 脚本和强制 cron 作业的特殊工具。

行政

编辑任何内容,编辑布局,设置。

作者

编辑内容。

成员

可以查看登录屏幕、忘记密码和错误报告。

现在,Zend 有一个很好的 ACL 实现,因此您可以轻松地扩展您的基本 ACL 类并添加从基本角色扩展的新角色。因此,我可能会创建一个“管理员”,可以访问其中一个开发工具(例如清除或缓存管理),或者锁定作者只能管理博客(而不是例如新闻)。

于 2009-12-11T04:54:29.530 回答
2

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

于 2009-12-12T11:39:13.863 回答
2

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

作者:对特定内容拥有所有权利的人(如拥有博客的博客作者),也有权添加/邀请用户协作/查看内容

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

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

编辑:可以批准/编辑所有类型内容的人

如果您希望高级用户/开发人员使用 CMS,那么进行细粒度控制并不是一个坏主意。但是对于新手 CMS 管理员来说,基本角色使系统更加可用。

于 2009-12-13T18:59:00.747 回答
1

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

编辑器 - 可以编辑其他人的帖子+下面的所有内容

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

于 2009-07-28T12:22:37.070 回答
0

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

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

Publisher - 负责发布内容以供使用。

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

消费者、观众或访客——在内容发布或共享后阅读或以其他方式获取内容的人。

于 2015-12-16T19:07:44.707 回答