`
javaEdge
  • 浏览: 21822 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

系统权限设计

阅读更多

      近期做了一个项目,框架是用struts + spring + hibernate,在做权限设计的时候上网查了很多设计方法,但是从控制的粒度来说,能控制到按钮的方法很少。之前看到过一个项目控制权限的方法是把系统中所有需要权限控制的按钮都设计到数据库中,每一个菜单对应一个或多个按钮,分配权限时给用户分配能操作的按钮权限。只是看到过,没有自己实现过,而这次项目的框架是由我自己来设计,所以我按照这个思想如下设计我的系统权限:

     1.系统的层次分为模块、主菜单、子菜单、按钮(每个按钮对应一个动作)四级。

     2.为每个层次命名一个动作名称,因为我的系统设计是每个子菜单对应一个action,每个action里面对应多个动作, 最后每个按钮对应的动作名称为:模块动作名称_主菜单动作名称_子菜单动作名称_按钮动作名称,例如:system_usermanager_user_add,这样得出的每个动作名称在系统中都是唯一的。

     3.用户进入系统时会根据数据库记录的用户权限找出该用户所对应的模块进行权限的初始化。

     4.当用户每点击进入一个模块时会把该用户在该模块下的菜单权限进行初始化,然后用户点击进入菜单时再根据数据库中记录的权限对该页面的按钮权限进行初始化,没有权限的按钮将被禁用。

     5.考虑到有些用户可能会用url地址对系统进行破坏性的侵入,用户每点击一次模块时,都会把该用户在该模块下所拥有的动作权限都记录到session当中,用户点击按钮进行操作时都会产生一个动作,在BaseAction中会对这个动作跟session中的动作名称进行比对,没有权限将转到无权限的信息提示页。

     所有的权限控制思想如上所述,请各位高手提出宝贵的意见,是否有更好的设计方法,期待下个项目再进行改进。

3
0
分享到:
评论
2 楼 javaEdge 2008-11-24  
zhaojuan8 写道

权限 资源(还可细分) 角色 人物 组

角色是有的,但是没有再进行分组,因为我们这个系统的角色分类不会太多,如果有某个用户需要多个角色的权限,可以给他分配多个角色,系统初始化权限会合并两个角色的权限。
1 楼 zhaojuan8 2008-11-24  
权限 资源(还可细分) 角色 人物 组

相关推荐

Global site tag (gtag.js) - Google Analytics