2012-02-17 38 views
1

这是在Web应用程序意识中很平常的事。我已经做了很多次。如何设计用户,角色和权限模式?

但我困在我目前为此设计架构的项目中。

事情是我的应用程序将有三种类型的用户在开始例如SuperAdmin,Admin和普通用户。

我打算将这些用户类型作为角色,如ROLE_SUPERADMIN,ROLE_ADMIN和ROLE_USER。

该系统可以有很多的角色。实际上,SuperAdmin和Admins创建角色并将这些角色分配给用户。

的问题是,

超级管理员将不得不在未经许可的P1,P2和P3。超级管理员可以创建其他超级管理员。 超级管理员可以创建管理员。 超级管理员将无法在系统中添加用户。

管理员可以拥有权限p5,p6和p7。 管理员无法创建其他管理员。 管理员可以创建其他用户。 管理员还可以创建类似的报告说观众的角色。

具有权限p1,p2和p3的超级管理员应该能够创建具有权限p5,p6和p7的管理员。我没有得到。

从逻辑上讲,超级自己没有权限p5,p6和p7时,他们如何才能创建具有这些权限的管理员?

请帮我出这个正确的设计。

下面是设计我到目前为止。

用户
用户名角色ID

作用
角色ID ROLENAME

准许
PermissionID PermissionName

ROLE_PERMISSION 角色ID PermissionID

感谢。

+0

No comme nts尚未。我认为这在Web应用程序开发中是非常普遍的事情。过去肯定有人遇到过这种情况。请帮忙。 – ashishjmeshram 2012-02-17 04:44:30

+0

这实在令人失望。这些日子你问的大部分问题都没有答案。即使给予奖励。 :( – ashishjmeshram 2012-02-17 05:00:55

+0

你好?有人请回复 – ashishjmeshram 2012-02-17 05:52:54

回答

2

这是一个加载的问题,设置成员,角色等是不小的壮举。我建议你看看已经写好的图书馆,看它们是否适合你的需求。你应该开始使用谷歌搜索,简称为“访问控制列表”(acl)。

2

一旦设计出这样的数据库,

我安装了一些论坛,门户和CMS脚本,分析了他们如何处理这种情况,然后提取了DB模式并将它们用作参考。

可能这可以帮助

2

你应该看看的授权框架,如XACML标准 - XACML允许您定义基于几个属性的授权,这样你就不会在角色爆炸告终。因此,而不是创建一个角色manager_in_tx_with_gold_status,您可以创建规则,例如:

与角色=经理,位置= TX可以做动作=视图上资源的用户....

有几种供应商解决方案和开源解决方案。退房的维基百科页面和标准的主页以获得更多信息:

我有一个YouTube频道太多,大约XACML会谈: