此种权限该咋怎?独立的spacl搞不了哇

#1 血神

QQ截图20121201174512.jpg
如图所示,当然,实际权限分配是这个图里面的至少3倍以上。
分不同的部门(权限肯定不一样的),同一个部门里面,肯定有几个人的权限又跟同部门的人又不一样。
并且部门也多。

这种情况,权限这块咋搞咧。
如果用spacl好像不咋好操作哇

2012-12-01 17:49:35

#2 jake

ACL功能强大,本来就是做这个的,建议你好好理解手册。

关键点:转换思维,把“组”的概念转换成“独立用户”。角色可以是多种多样的身份。

具体做法:

1. 所谓的“部门”,不要假定是“组或者角色”,而是“该部门全部用户的默认权限”。
2. 在用户表里面,加入一个字段(0或1,默认0),表示“是否已经修改过默认权限”,如果没有修改,那么该用户就按部门的默认权限,如果有修改,就按修改过的权限。
3. 每个单独的权限(controller/action)就是你上图的一个权限,这和acl最基础的使用没什么两样。
4. 角色方面,每个部门有不同的权限,这是作为“部门默认权限”,角色值是部门名称。
5. 当新增一个用户,默认就是部门权限,字段值是0。
6. 当修改了单独的一个用户的权限后,update用户表的那个字段(设置成1),表示他是单独的权限(而不是部门权限),他的角色值应该是他的用户名。
7. 在用户登录后,给用户设置角色时,检查是否修改过默认权限的字段(0或1)。如果已经修改(1),那么他的角色设置为他的用户名,如果没修改(0),角色就设置成他的部门角色名。

spAcl还可以做到非常多的权限类型,扩展一下acl表加入一些字段,甚至可以做到不同用户都可以有相同的controller/action权限,但在action内区分不同的数据类型和操作(通过加入的字段做区分)。

2012-12-01 18:33:28

#3 血神

非常感谢jake的思路,谢谢

2012-12-01 19:45:15

#4 血神

怎么结贴?

2012-12-02 09:23:38

#5 jake

血神 发表于 2012-12-2 09:23
怎么结贴?
回复就OK了

2012-12-02 12:11:47