2007年1月31日星期三

权限控制的下一步工作

参看com.hikehi.servlet.TreeView

其中,NodeService.getAclByPrincipalId (String principalId)用于取得某个节点的acl,此处的某个节点(即principalId表示的)可以是folder的id,也可以是node index的id。该方法返回一个com.hikehi.privilege.Acl类型的值。如果返回结果为空,表明该节点的权限是继承而来。每一组 Acl包含若干条ACE。每一组acl包括名字和权限判断的顺序(即先允许后禁止还是先禁止后允许)。每条ace表明了“谁(用户或用户组的id)-能否做-某项操作”。系统的操作由com.hikehi.privilege.Operation定义,一共8种,分别是READ(读,读取node index及其属性),CREATE(创建新的node index或folder),MODIFY(修改,对node index的属性进行修改),DELETE(删除folder或者node index及其属性),OPEN(进入某个folder),RENAME(修改folder或node index的名字),GRANT(修改folder或者node index的权限),CHANGE_OWNER(改变folder或者node index的所有者)。
TreeView已经将提取acl的工作完成了,但是还不能显示在页面上。参照TreeView的代码,实现对库房的权限的显示和修改。在系统初始状态下,/goldentang下的所有folder都是继承了/goldentang的权限。对于继承权限的库房,需要在界面上能够让其拥有自己的权限。修改之后的或者是新加的权限,通过NodeService.grantFolderPrivilege()提交。需要修改权限的粒度只达到“用户组-folder”即可,不需要“用户-folder”或者“用户组-node index”或者“用户-node index”。
注意,admin这个用户仍然要拥有对库房的全部操作权限,这是在程序中需要默认加上的。
对库房的操作不要细分为8种情况,而是分为查看、入库和出库3种。其中,查看=对库房下的所有子folder有READ和OPEN的权限,入库=对ins, remains和materials有OPEN,READ和CREATE权限,出库=对remains有OPEN,READ和MODIFY权限,对 outs有OPEN,READ和CREATE权限,对materials有OPEN和READ权限。


我的整理

系统中现有权限体制

1.权限粒度
权限的粒度只达到“用户组-folder”即可,不需要“用户-folder”或者“用户组-node index”或者“用户-node index”。
2.权限控制
在NodeService.getAclByPrincipalId (String principalId)用于取得某个节点的acl,此处的某个节点(即principalId表示的)可以是folder的id,也可以是node index的id。该方法返回一个com.hikehi.privilege.Acl类型的值。如果返回结果为空,表明该节点的权限是继承而来。每一组 Acl包含若干条ACE。每一组acl包括名字和权限判断的顺序(即先允许后禁止还是先禁止后允许)。每条ace表明了“谁(用户或用户组的id)-能否 做-某项操作”。
3.系统权限划分
系统的权限操作由com.hikehi.privilege.Operation定义,一共8种,分别是READ(读,读取node index及其属性),CREATE(创建新的node index或folder),MODIFY(修改,对node index的属性进行修改),DELETE(删除folder或者node index及其属性),OPEN(进入某个folder),RENAME(修改folder或node index的名字),GRANT(修改folder或者node index的权限),CHANGE_OWNER(改变folder或者node index的所有者)。
4.自定义权限
用户可以对系统中的8种权限进行组合。比如:设定用户组A对库房X的权限
查看
A对X下的所有子folder有READ和OPEN的权限
入库
A对X下ins, remains和materials有OPEN,READ和CREATE权限
出库
A对X下remains有OPEN,READ和MODIFY权限;
A对X下outs有OPEN,READ和CREATE权限;
A对X下materials有OPEN和READ权限。
注:admin这个用户仍然要拥有对库房的全部操作权限,这是在程序中需要默认加上的。
权限设定完成后用户A下的所有用户都有对X相应的权限。
5.用户登录后
用户登录包括:用户名/密码及session id,用户登录成功后所有的操作都是靠session来控制的,其中session中包含两部分,一是session id,另一个是拥有该session 的用户id,也就是说在用户登录成功后可以通过session取出用户id从而标识了该用户。当需要进行权限验证时,系统根据该用户所处的用户组有无相应的权限来做验证。


财务模块的权限要求

1.用户登录统一
2.独立设置权限

没有评论: