这在web应用程序开发中是很常见的事情。我已经做过很多次了。
但是我被困在了我目前的项目中,为这个设计模式。
问题是,我的应用程序一开始会有三种类型的用户,例如SuperAdmin,管理员和普通用户。
我计划将这些用户类型作为角色,如ROLE_SUPERADMIN、ROLE_ADMIN和ROLE_USER。
系统可以有多个角色。事实上,SuperAdmin和Admins会创建角色并将这些角色分配给用户。
问题是,
超级管理员将拥有p1、p2和p3的权限。超级管理员可以创建其他超级管理员。超级管理员可以创建管理员。超级管理员不会在系统中添加用户。
管理员可以拥有p5、p6和p7权限。管理员不能创建其他管理员。管理员可以创建其他用户。管理员也可以创建角色,比如报表查看者。
具有p1,p2和p3权限的超级管理员应该能够创建具有p5,p6和p7权限的管理员。我还不是很明白。
从逻辑上讲,当超级管理员本身没有权限p5、p6和p7时,他们如何创建具有这些权限的管理员?
请帮我找出合适的设计。
下面是我到目前为止的设计。
用户
UserID RoleID
角色
RoleID RoleName
权限
PermissionID PermissionName
ROLE_PERMISSION RoleID PermissionID
谢谢。
发布于 2012-02-17 14:20:33
这是一个加载的问题,设置成员、角色等不是一件容易的事情。我建议你看看已经写好的库,看看它们是否适合你的需要。你应该从谷歌开始搜索,简称为“访问控制列表”(acl)。
发布于 2012-02-17 14:49:00
一旦设计了这样的数据库;
我安装了一些论坛、门户和CMS脚本,并分析了它们是如何处理这种情况的,然后提取了DB模式并将其作为参考。
也许这能帮上忙
发布于 2013-07-01 02:12:54
您应该研究授权框架和标准,例如XACML - XACML允许您基于多个属性定义授权,这样您就不会陷入角色爆炸。因此,您可以创建规则,而不是创建角色manager_in_tx_with_gold_status,例如:
具有role=manager和location=TX的用户可以对资源执行action=view ...
也有一些供应商的解决方案和开源的解决方案。请查看Wikipedia页面和该标准的主页以获取更多信息:
我也有一个关于XACML的Youtube频道:
https://stackoverflow.com/questions/9322753
复制相似问题