2010-12-03 67 views
0

我已经构建了一个数据库驱动的Web应用程序,该应用程序具有用户和组系统,它们以类似于Linux处理用户访问的方式工作。将Linux组织理念应用于Web应用程序

Breif解释:

用户可以访问不同的资源,所述资源被分配给一个组,并且用户可以具有许多组。

用户

 
id name 
-- ------- 
1 RedRanger 
2 GreenRanger 
3 BlueRanger 

组分配

 
user group 
---- ----- 
1  33 
1 44 
1 55 
2 33 
2 44 
3 33 
3 44 
3 55 
3 66 

组描述

 
gid name 
--- ---- 
33 user 
44 things 
55 stuff 
66 foo 

资源

 
name group 
---- ----- 
a 33 
b 33 
c 33 
x 44 
y 55 
z 66 

RedRanger可以访问的,B,C,x和y,但不Ž
GreenRanger只能访问A,B,C和X
BlueRanger可以访问的,b,C,X,Y和Z

让我们说RedRanger需要被拒绝访问资源

如果我将他从组33中删除,他不能再访问b或c,这是不好的。

唯一的选择是改变一个组,并将其他所有人添加到新组中,但这对3个用户来说并不是那么糟糕,但是3,000呢?

如果这种情况经常发生,很快就会出现一团乱七八糟的情况。

这个问题的最佳方法是什么?

+0

这种做法不是Linux独有的,而是由Unix/BSD使用。 – Rob 2010-12-04 11:09:58

回答

0

资源应该能够“属于”多个组,而不仅仅是一个。这个限制确实限制了设计。

您正在对RBAC系统进行部分操作;有一个阅读它,看看你可以更灵活一点,以获得更好的结果。

+0

>“资源应该能够”属于“多个组。”这也是我的想法。谢谢你的链接!这就是我一直在寻找的。 – ActionOwl 2010-12-06 12:53:36

0

听起来像RedRanger不再适合角色(组)33并且需要创建一个新角色,以访问适合这个新角色的功能(资源)。 3个用户与3000个用户的关系只是在管理用户界面中进行更改而不是彻底更新数据库的问题。