我目前正在编写一款CMS,并记得有人(可能是在这里)批评现有的CMS没有足够强大的用户权限系统。我已经制定了一种方法,但我觉得它已经陷入了通常会过于详细的陷阱,这使得最终用户难以理解和实施。
我认为拥有一系列带有权限的默认用户角色将是解决这个问题的答案,因此我的问题是:
您希望在CMS中看到哪些默认角色,以及这些角色将与哪些权限相关联?
提前感谢!
我目前正在编写一款CMS,并记得有人(可能是在这里)批评现有的CMS没有足够强大的用户权限系统。我已经制定了一种方法,但我觉得它已经陷入了通常会过于详细的陷阱,这使得最终用户难以理解和实施。
我认为拥有一系列带有权限的默认用户角色将是解决这个问题的答案,因此我的问题是:
您希望在CMS中看到哪些默认角色,以及这些角色将与哪些权限相关联?
提前感谢!
这是我在大多数项目中最终采用的“最佳实践”,我非常满意:
1. 角色
对于角色,我建议灵活性非常高,即能够自由创建和定义用户帐户和组(像“贡献者”,“管理员”等角色不是硬编码的,而是放入可以根据应用程序更改的配置文件中)。角色配置对用户不可见,但引擎本身应该没有硬编码的角色。
2. 权限
权限是需要易于理解和实现的地方。
我很好地使用了代码/ API级别的非常细粒度的权限(并进行检查):
但用户从未看到过这些。对于他们,它们被分组成非常少量的“权限组”:
用户从未看到“移动”权限,只看到“管理”权限组。
这样,您就可以保留代码中非常细粒度权限的全部功能,以备将来使用 - 您可以轻松适应类似于“实习生必须能够编辑页面,但不能更改页面标题,也不能删除它们”的规则,为CMS添加有价值的资产。对于最终用户,此功能仍然不可见,并且权限系统易于使用。
我之前提出了这个问题,并获得了以下回答。
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
您是否研究过像RBAC这样的现有解决方案?虽然这样的系统很可能对于您尝试解决的特定问题来说过于复杂,但它至少可以帮助增强您正在正确的轨道上。
除此之外,我预期的一般角色应该是:
管理员 - 对系统拥有完全控制权,可以查看日志(因为您应该记录所有更改),等等,还可以...
发布者 - 可以将内容发布到线上,还可以...
作者 - 可以创建内容
然而,如何在整个系统中应用这些角色是棘手的,因为特定用户可能对不同的内容区域/模块具有不同的权限。
我不会轻易地否认你现有的细粒度控制系统。如果你拥有一个可适应的系统,重点是通过提供简化的接口(例如使用外观模式或适配器模式)来隐藏复杂性。好处是你可以为用户提供简化版本(例如简单的权限,如“管理员”可以“删除”“帖子”),同时仍然保留细粒度功能,以便以后需要时使用(例如更复杂的权限处理是允许在类别X中删除自己的帖子)。然后你可以在某些地方为该需求提供简化版本的替代方案。
管理员:拥有所有权限的人。
作者:拥有特定内容(如博客作者拥有自己的博客)的所有权,也有权限添加/邀请用户进行协作/查看内容。
协作者:可以编辑/添加作者授予权限的内容,但不能删除内容或邀请/添加更多的协作者。
查看者:如果作者邀请查看,则可以查看内容。
编辑者:可以审核/编辑所有类型的内容。
对于预计高级用户/开发人员使用CMS的情况,细粒度的控制并不是一个坏主意。但对于新手CMS管理员来说,基本角色使系统更加易用。
管理员 - 可以创建用户 + 所有以下权限
编辑 - 可以编辑他人的帖子 + 所有以下权限
作者 - 可以撰写帖子,编辑自己的帖子
创建者-负责创建和编辑内容。
编辑-负责调整内容消息和交付方式的风格,包括翻译和本地化。
发布者-负责发布可供使用的内容。
管理员-负责管理对文件夹和文件的访问权限,通常通过为用户组或角色分配访问权限来完成。
消费者、观众或访客-在内容被发布或共享后阅读或吸收内容的人。