锁定老帖子 主题:树形菜单的权限控制是个蛋疼的问题【讨论】
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-18
最后修改:2011-10-18
新建一个节点权限定义表B,两列: 节点id 用户级别 节点id引用树节点表A中的 节点id为外键 查询时 将AB表关联根据用户级别过滤。
|
|
返回顶楼 | |
发表时间: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 功能表.查看权限表示=可以查看 |
|
返回顶楼 | |
发表时间:2011-10-28
我把数据表结构大概画了一下你看看就明白了,这说起来确实挺挠口得
|
|
返回顶楼 | |
发表时间:2011-10-28
handong890 写道 我把数据表结构大概画了一下你看看就明白了,这说起来确实挺挠口得
功能表 掉了一个很重要的字段啊,父id字段,要不没法做成树目录 |
|
返回顶楼 | |
发表时间:2011-10-28
由于树结构的特殊性,可以在ID上做一点取巧的操作,即对“ID”的规则做出约定
001 中国 001001 广东省 001001001 深圳市 001001002 广州市 这样可以稍微节省一点运算(无论是SQL还是遍历) |
|
返回顶楼 | |
发表时间:2011-12-28
最后修改:2011-12-28
左边菜单表跟右边的角色表是多对多,角色表跟员工表是一对多,员工登陆通过员工主键找到对应的角色,通过角色ID找到对应的菜单列表,就知道该员工是否具有对该页面的操作权限,菜单边就存储页面URL路径和父节点ID,菜单的数据采用递归出来,子节点选中,它的所有父节点完全选中,点击保存,需要判断选中的节点的父节点也选中,个人建议选择递归做。
|
|
返回顶楼 | |
发表时间:2012-01-09
mlw2000 写道 由于树结构的特殊性,可以在ID上做一点取巧的操作,即对“ID”的规则做出约定
001 中国 001001 广东省 001001001 深圳市 001001002 广州市 这样可以稍微节省一点运算(无论是SQL还是遍历) 这样比较好 |
|
返回顶楼 | |