论坛首页 Java企业应用论坛

树形菜单的权限控制是个蛋疼的问题【讨论】

浏览 16154 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-18   最后修改:2011-10-18
新建一个节点权限定义表B,两列:  节点id   用户级别  节点id引用树节点表A中的 节点id为外键  查询时 将AB表关联根据用户级别过滤。
0 请登录后投票
   发表时间:2011-10-28  
可执行 写道
wad12302 写道
一次读出这个人所有的访问权限List
然后在java中进行组装成tree结果,保存 缓存。

然后显示出来


“一次读出这个人所有的访问权限”写sql读么?问题就在这啊,用什么样的方法能把这个人所有权限节点查出来?



你会有这么几张表吧,用户,角色,功能(保存着对应功能url) ,用户_角色关联表(按用户查角色,按角色查用户)
然后有1张功能对应表就是 用户id,角色id对应功能表id;也可能了你会有2张对应表1张专门对应用户,一张专门对应角色

“一次读出这个人所有的访问权限”写sql读么?问题就在这啊,用什么样的方法能把这个人所有权限节点查出来?

查出改用户所有的功能点,查出该用户对应角色所有的功能点 完了...

sql语句看起来大概像这样


select * from 功能表 where 功能表.id in (  

select id from  功能对应表 where 功能对应表.用户id=userid
union all
select id from  功能对应表 where 功能对应表.角色 in (select 角色id from 用户_角色关联表 用户id=userid)
 ) and 功能表.查看权限表示=可以查看



0 请登录后投票
   发表时间:2011-10-28  
我把数据表结构大概画了一下你看看就明白了,这说起来确实挺挠口得
  • 大小: 78.3 KB
0 请登录后投票
   发表时间:2011-10-28  
handong890 写道
我把数据表结构大概画了一下你看看就明白了,这说起来确实挺挠口得

功能表 掉了一个很重要的字段啊,父id字段,要不没法做成树目录
0 请登录后投票
   发表时间:2011-10-28  
由于树结构的特殊性,可以在ID上做一点取巧的操作,即对“ID”的规则做出约定

001 中国
001001 广东省
001001001 深圳市
001001002 广州市

这样可以稍微节省一点运算(无论是SQL还是遍历)
0 请登录后投票
   发表时间:2011-12-28   最后修改:2011-12-28
左边菜单表跟右边的角色表是多对多,角色表跟员工表是一对多,员工登陆通过员工主键找到对应的角色,通过角色ID找到对应的菜单列表,就知道该员工是否具有对该页面的操作权限,菜单边就存储页面URL路径和父节点ID,菜单的数据采用递归出来,子节点选中,它的所有父节点完全选中,点击保存,需要判断选中的节点的父节点也选中,个人建议选择递归做。
  • 大小: 76.9 KB
0 请登录后投票
   发表时间:2012-01-09  
mlw2000 写道
由于树结构的特殊性,可以在ID上做一点取巧的操作,即对“ID”的规则做出约定

001 中国
001001 广东省
001001001 深圳市
001001002 广州市

这样可以稍微节省一点运算(无论是SQL还是遍历)


这样比较好
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics