由于我们项目权限级别控制到按钮和菜单级,所以牵扯到一些麻烦。
目前我设计的权限控制方案如下:
首先有一个权限资源表,里面定义了资源ID,资源名称,资源CODE,资源URL等相关的权限资源参数。由于要控制到按钮级,所以我写了个自定义标签。该标签可以控制按钮与菜单链接显示与否,具体方式如下:<!-- 
    这里的code就是权限资源表中的CODE,这样可以判断当前登陆的用后是否有权限操作该资源,有就显示,没有就不显示。
     如果不显示的情况下,在地址栏直接输入该请求的URL去访问也会跳转到没有权限的页面。     该方法也用到了左侧菜单栏上,如果用户有权限操作该模块就显示出菜单链接。
 -->
<au:auth code="ADDUSERINFO"><input type="button"  class="ADD" value="增加" onclick="newUser();"/></au:auth>
好 这样设计的确得到大家的认同,但是不好之处出来了。
(一): 就是必须得在权限资源模块为每一个请求设置一条权限资源记录
(二):例如我一个用户的新增操作 包括新增页面和新增保存两个请求,再加上我还得分配部门和角色,所以又得把部门和角色树加载的链接勾中。同事们都觉得这样在权限模块中定义数据很烦杂,加上给角色分配权限的时候如果想让用户有新增的权限还必须得勾中这N条权限资源信息。
大家有没有什么好的方法解决一下吗?

解决方案 »

  1.   

    以前做过一个类似于你这样的,不过然后扔掉了;目前认为合理的应该是按 模块=>功能 方式做权限表
    比如:模块名称:用户管理; code: usermanage
         功能名称:添加; code: usermanage_add
         功能名称:删除; code: usermanage_del各个模块,java代码中就对应一个基类。检测一下当前用户是否可以进入这个模块;
    功能点的操作,传一个功能的code检测一下。比如你说的这个(二):例如我一个用户的新增操作 包括新增页面和新增保存两个请求,再加上我还得分配部门和角色,所以又得把部门和角色树加载的链接勾中。 [发本来就是添加用户功能中必须的东西。
      

  2.   

    以前做过一个类似于你这样的,不过然后扔掉了;目前认为合理的应该是按 模块=>功能 方式做权限表
    比如:模块名称:用户管理; code: usermanage
         功能名称:添加; code: usermanage_add
         功能名称:删除; code: usermanage_del各个模块,java代码中就对应一个基类。检测一下当前用户是否可以进入这个模块;
    功能点的操作,传一个功能的code检测一下。比如你说的这个(二):例如我一个用户的新增操作 包括新增页面和新增保存两个请求,再加上我还得分配部门和角色,所以又得把部门和角色树加载的链接勾中。 它本来就是添加用户功能中必须的东西。