`
可执行
  • 浏览: 17489 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

阅读更多

想必,做树权限应该是经常碰到的头痛问题,寻求最佳实现!!



前提是这样的:

现有一已经实现的树形导航,每个节点(包括子节点父节点)都对应了一个页面(如有需要父节点可以设计为不对应页面),树形结构以节点为描述存入数据库,一条节点数据库描述如下:

节点{节点id,父节点id,是否有子节点,子节点个数,其它}

从节点描述可以看出每个节点只知道它的父节点是谁,知道自己有没有子节点,并不知道它的爷爷和儿子具体是谁(当然我们可以用父节点id作为查询条件从而得知“父节点”的子节点有哪些)。

前台js已实现根据节点数据自动通过父子关系组装显示整个树。


需求:

(1)现在要对这棵树做权限控制,实现不同的人看到不同的树型导航,也就是如果用户对某个节点没有权限那么次节点对此用户不显示(这里的不显示是指后台没有读出此节点的数据库数据给前台,而不是前台通过js隐藏)

(2)树节点比较多,不宜过多操作数据库。

(3)权限系统希望独立出去,也就是不能在节点数据库表结构上添加其它列

(4)全线系统可以建立自己的数据库表

(5)权限系统可以读取节点信息表和用户表(用户表归权限系统)但是不能修改其信息

(6)全线系统要达到:能给用户配置指定节点的权限(暂定只有访问权限)

可以任意发挥!可以任意添加表!可以任意添加逻辑!只要不改变节点表。


大体思路:

登录部分:
用户登录系统 -> 将用户名、密码发送到权限系统 -> 权限系统返回是否允许登录

树生成部分:
系统将用户名发到权限系统 -> 权限系统返回其可访问的节点信息【1】 -> 系统根据节点信息组装树【2】

问题来了:
(1)建立什么样的权限系统表结构(包括用户表)来映射用户和树节点表最好?
(2)在【1】处用什么样的算法达到迅速读取某用户对应的节点信息?
(3)在【2】处要组装完整的树光有子节点是不行的,还必须查处它的父节点和爷爷节点直到树根,不然树是断开的无法组装树。



其实如果能写出一个这样的sql就能解决了,这个sql能查出某个用户有权的树节点,并能根据这些节点查出其父节点,再根据父节点查出爷爷节点。。。直到树根。但是这样的查询速度会不会很慢?有什么更好的方法么?


想必做树权限应该是经常碰到的头痛问题,寻求最佳实现,欢迎大家讨论!




分享到:
评论

相关推荐

    树形菜单带权限

    3. 权限控制:在“带权限”的树形菜单中,权限控制是一个关键环节。这通常涉及到角色-权限模型,其中用户被分配到不同的角色,每个角色拥有特定的操作权限。在展示菜单时,系统会检查用户的角色,并只显示其有权访问...

    HTML树形菜单

    为了让树形菜单具有交互性,我们需要借助JavaScript进行动态控制。JavaScript是一种客户端脚本语言,它可以修改HTML文档的内容、样式,以及与用户的交互方式。在这个例子中,我们可能需要监听用户的点击事件,通过...

    java动态树形菜单

    本示例是一个基于Java实现的JSP动态树形菜单功能,旨在提供一个简单而全面的解决方案,覆盖了从数据获取到页面渲染的全过程。 首先,我们要理解树形菜单的基本概念。树形菜单是由节点(通常代表菜单项)构成的层级...

    java树形菜单

    这个压缩包“treemenu”很可能包含了一个简单的WinFrom应用程序,其中实现了树形菜单的功能。让我们深入探讨一下Java实现树形菜单的相关知识点。 1. **Swing组件与JTree**: 在Java Swing库中,`JTree`是用于创建树...

    树形菜单 三种使用的树形菜单

    例如,`jQuery`库提供了便利的DOM操作,而`ztree`则是一个基于jQuery的树形菜单插件,它提供了丰富的配置选项和API,便于开发者定制各种功能和样式。 3. AJAX 实现 当数据量较大或者需要实时更新时,可以采用AJAX...

    jsp树形菜单 dtree tree 树形菜单

    在这个“jsp树形菜单 dtree tree 树形菜单”的项目中,我们将探讨如何利用JSP、dtree库以及可能的Struts框架来创建一个动态的树形菜单。 首先,JSP(JavaServer Pages)是一种基于Java的技术,用于创建动态Web内容...

    树形菜单例子

    下面将详细讨论树形菜单的设计思想、实现方法以及与数据库的关系。 首先,设计树形菜单的关键在于理解其层次结构。每个菜单项都可以视为一个节点,具有父节点和子节点。根节点通常代表最顶级的菜单,没有父节点,而...

    一个js树形菜单

    本项目是一个基于JavaScript实现的树形菜单,旨在提供一种灵活且易于定制的解决方案。 1. **基础概念** - **树形结构**:树形结构是数据结构的一种,它模拟了自然界中的树状模型,具有分支和层次关系。 - **菜单*...

    JS无限级树形菜单

    JS无限级树形菜单3种

    ajax树形菜单 动态显示

    在这个“ajax树形菜单 动态显示”的项目中,我们关注的是如何利用Ajax技术来实现一个交互式的、只在需要时加载内容的树形菜单。 树形菜单是一种常见的用户界面元素,它通过层级结构来展示信息,常用于网站导航、...

    jquery 树形菜单

    在这个例子中,我们创建了一个包含两个父节点和两个子节点的简单树形菜单。`setting`对象用于配置zTree的行为,`zNodes`是树形结构的数据源。`$.fn.zTree.init`函数用于启动zTree,将指定的DOM元素(#treeDemo)转换...

    LayUI之树形菜单的实现(详细描述附带项目案例)及数据库脚本

    本文将详细探讨如何使用LayUI实现树形菜单,并结合数据库脚本来构建一个实际的项目案例。 首先,我们需要理解LayUI的树形菜单组件。LayUI的树形菜单主要基于`layui.tree`模块,该模块提供了生成和操作树形结构的...

    带复选框的树形菜单-

    首先,"树形菜单"(Tree Menu)是一种用户界面组件,它以树状结构来呈现信息,每个节点可以有子节点,形成层级关系。用户可以通过展开和折叠节点来查看和隐藏子节点,这种形式对于有层级关系的数据非常直观。 其次...

    JavaScript实现树形菜单

    实现JavaScript树形菜单主要涉及以下几个关键技术点: 1. 数据结构设计:首先,我们需要定义一个数据结构来存储树形菜单的数据。通常,我们可以使用JSON对象来表示菜单节点,每个节点包含ID、文本、子节点数组等...

    javascript制作 树形菜单.zip

    树形菜单由节点组成,每个节点可以有子节点,形成一个层级结构。在JavaScript中,这些节点通常用对象表示,通过对象属性和关系链接各个节点。菜单的展开与折叠可以通过事件监听和DOM操作实现。 创建树形菜单的步骤...

    s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单.rar

    在IT行业中,构建一个无限级树形菜单是常见的需求,特别是在Web应用中,用于组织和展示层次结构的数据。本项目“s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单”就是这样一个解决方案,它整合了多种技术来...

    JS树形菜单源代码下载

    JS树形菜单源代码下载,JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码...

    多种树形菜单

    "多种树形菜单"这一主题聚焦于JavaScript中的dTree控件,它是一个强大且灵活的工具,专门用于创建这种交互式的树形菜单。 dTree控件的核心特性在于它的易用性和可扩展性。首先,dTree支持无限级别的分级,这意味着...

Global site tag (gtag.js) - Google Analytics