本帖最后由 penghaijun 于 2009-07-01 22:41:51 编辑

解决方案 »

  1.   

    数据权限比功能权限控制起来要复杂,最近也在思考同样问题.已经设计好了一个基于 RBAC0 的功能权限小系统,相关数据库表设计:一个基于RBAC0的通用权限设计清单但是相关数据权限控制还没有比较好的解决方案,有朋友介绍针对数据级权限的 Metadmin 产品,个人觉得还不错.不知道用起来效果如何.不知道大家有什么好的方案,分享一下.
      

  2.   

    增加数据权限过滤机制,对于数据权限定义是要以userId为基础加载此用户在某功能下对应的数据权限,对显示信息可直接拼接Sql来解决,对按钮的控制一部分是功能级的权限如{CRUD},令一部分是自定义的如{打印报表,审核,},也不知道你那系统对功能是咋设计的,我们是通过功能可以查到它对应所有的信息{表,视图,物理级别过滤条件,逻辑级别过滤条件[又分静/动态]},其中数据权限就属于对态的逻辑级别过滤条件..还有一种思路就是更缰的.. 我王先生财务科的审查者只能看月度费用中的合计,但不可以看到费用是那个机构的. 可直接将{合计字段,明细字段}增加自定义表达式通过自己的表达式解析机制自己推出来此字段是显示还是不显示,如{user.id=='admin'只有管理员此字段才呈现}大体思路是这样.
      

  3.   

    其实权限也就是条件问题。条件符合了为真,释放权限条件不符合为假,限制权限
    所以权限和你放在jsp还是放在其他类中没关系,只是你如何判断而已。
      

  4.   

    把 权限列表 存到 hashmap 中, 需要判断权限的地方if(map.get("xxx")!=null) 表示有权限
      

  5.   

    1.控制显示的数据这个主要是根据需求来,像我目前做的一个项目,整个系统按业务类型走,给每个用户分配一种或多种业务类型,当用户登陆后,查看到的数据就只能看到自己所有业务的数据了,这个实现简单,将当前用户保存到session当中,得到用户的业务类型,修改查询语句即可。
    2.控制页面上的按钮,这个相对来说复杂一点,该功能我在项目当中是实现了,挺复杂的。主要是体现在赋权限的时候。如果有兴趣的话,私聊下
      

  6.   

    <security:authorize ifAnyGranted="ROLE_ADMIN,ROLE_MANAGER">
    <tr>
    <td class=sonmenu>
    <a href="/gdsd/rolelist.action" target=main class=Asonmenu>角色权限管理</a>
    </td>
    </tr>
    </security:authorize>