基于URL资源控制的JAVA权限管理

基于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后台通过管理员便可以管理用户、角色、资源、权限。

基于URL资源控制的JAVA权限管理》有2条留言

回复 HideHai 取消回复