基于URL资源控制的JAVA权限管理
java下的权限管理自己一直也没做过,只清楚大概流程,之前看到过asp和php下的权限设计,一些php语言的cms中的权限设计我觉得很好,还有像Dz论坛的权限设计,感觉很灵活,使用起来也很灵活。虽然技术只是个工具,但是涉及到逻辑和机制等还是有很多差别的。
以前看到过CMS的权限,通过一些数学方案来设计权限代码,在确认权限的过程中就比较快,比如位运算、与或运算等。没有去仔细看过DZ的后台权限设计,DZ团队在权限上封装的很好,将很多的权限分类,通过人性化的下拉让用户易于操作。
还是以前,看过个Java的项目视频,将权限做到了页面的按钮上,自己一直也想做这么个东西,问过几个朋友,他们在项目中也差不多能实现这样的功能,也差不多是通过控制URL或者叫做资源吧,url不就是统一资源定位么,呵呵。
下面来说我处理的这个权限数据库设计,想法是分为用户+分组+角色+资源+权限,这里没有做分组这个东西,直接把用户和角色关联,需要如下的表:
1.用户表
2.角色表
3.用户角色对应表
4.资源表
5.角色资源对应表
6.角色资源对应的权限值表
这样的分开之后,能够在用户请求URL时,通过用户得到用户的角色,进而得到用户的资源,通过角色和资源的关联表取得当前资源下的权限。这里的权限分为增删查改(Create,Delelte,Retrieve,Update),按照数据公式2^(n-1)来分配值,即: 1/2/4/8,这样可以通过与运算来确定是否包含多个权限值。
比如:增加+删除权限的值为1+2 =3
在验证过程中得到权限值 采用如下验证代码即可确认是否拥有各项权限
java:
if((limit & 1)==1){
print(“有添加权限”);
}
这样处理后就能得到请求当前资源url的用户是否具有当前资源下的各权限,通过web传值,就能实现页面的CRUD操作权限控制。
在具体到后台验证权限,可以使用Filter、J2EE框架带的功能比如struts的过滤、spring的切面控制aop等来实现用户操作过程中或者请求某方法的权限,在web后台通过管理员便可以管理用户、角色、资源、权限。
扎皮和我一样了哦?
貌似还是有点差别撒…呵呵。黑色的看久了。