想必,做树权限应该是经常碰到的头痛问题,寻求最佳实现!!
前提是这样的:
现有一已经实现的树形导航,每个节点(包括子节点父节点)都对应了一个页面(如有需要父节点可以设计为不对应页面),树形结构以节点为描述存入数据库,一条节点数据库描述如下:
节点{节点id,父节点id,是否有子节点,子节点个数,其它}
从节点描述可以看出每个节点只知道它的父节点是谁,知道自己有没有子节点,并不知道它的爷爷和儿子具体是谁(当然我们可以用父节点id作为查询条件从而得知“父节点”的子节点有哪些)。
前台js已实现根据节点数据自动通过父子关系组装显示整个树。
需求:
(1)现在要对这棵树做权限控制,实现不同的人看到不同的树型导航,也就是如果用户对某个节点没有权限那么次节点对此用户不显示(这里的不显示是指后台没有读出此节点的数据库数据给前台,而不是前台通过js隐藏)
(2)树节点比较多,不宜过多操作数据库。
(3)权限系统希望独立出去,也就是不能在节点数据库表结构上添加其它列
(4)全线系统可以建立自己的数据库表
(5)权限系统可以读取节点信息表和用户表(用户表归权限系统)但是不能修改其信息
(6)全线系统要达到:能给用户配置指定节点的权限(暂定只有访问权限)
可以任意发挥!可以任意添加表!可以任意添加逻辑!只要不改变节点表。
大体思路:
登录部分:
用户登录系统 -> 将用户名、密码发送到权限系统 -> 权限系统返回是否允许登录
树生成部分:
系统将用户名发到权限系统 -> 权限系统返回其可访问的节点信息【1】 -> 系统根据节点信息组装树【2】
问题来了:
(1)建立什么样的权限系统表结构(包括用户表)来映射用户和树节点表最好?
(2)在【1】处用什么样的算法达到迅速读取某用户对应的节点信息?
(3)在【2】处要组装完整的树光有子节点是不行的,还必须查处它的父节点和爷爷节点直到树根,不然树是断开的无法组装树。
其实如果能写出一个这样的sql就能解决了,这个sql能查出某个用户有权的树节点,并能根据这些节点查出其父节点,再根据父节点查出爷爷节点。。。直到树根。但是这样的查询速度会不会很慢?有什么更好的方法么?
想必做树权限应该是经常碰到的头痛问题,寻求最佳实现,欢迎大家讨论!
分享到:
相关推荐
3. 权限控制:在“带权限”的树形菜单中,权限控制是一个关键环节。这通常涉及到角色-权限模型,其中用户被分配到不同的角色,每个角色拥有特定的操作权限。在展示菜单时,系统会检查用户的角色,并只显示其有权访问...
为了让树形菜单具有交互性,我们需要借助JavaScript进行动态控制。JavaScript是一种客户端脚本语言,它可以修改HTML文档的内容、样式,以及与用户的交互方式。在这个例子中,我们可能需要监听用户的点击事件,通过...
这个压缩包“treemenu”很可能包含了一个简单的WinFrom应用程序,其中实现了树形菜单的功能。让我们深入探讨一下Java实现树形菜单的相关知识点。 1. **Swing组件与JTree**: 在Java Swing库中,`JTree`是用于创建树...
例如,`jQuery`库提供了便利的DOM操作,而`ztree`则是一个基于jQuery的树形菜单插件,它提供了丰富的配置选项和API,便于开发者定制各种功能和样式。 3. AJAX 实现 当数据量较大或者需要实时更新时,可以采用AJAX...
在这个“jsp树形菜单 dtree tree 树形菜单”的项目中,我们将探讨如何利用JSP、dtree库以及可能的Struts框架来创建一个动态的树形菜单。 首先,JSP(JavaServer Pages)是一种基于Java的技术,用于创建动态Web内容...
下面将详细讨论树形菜单的设计思想、实现方法以及与数据库的关系。 首先,设计树形菜单的关键在于理解其层次结构。每个菜单项都可以视为一个节点,具有父节点和子节点。根节点通常代表最顶级的菜单,没有父节点,而...
本项目是一个基于JavaScript实现的树形菜单,旨在提供一种灵活且易于定制的解决方案。 1. **基础概念** - **树形结构**:树形结构是数据结构的一种,它模拟了自然界中的树状模型,具有分支和层次关系。 - **菜单*...
JS无限级树形菜单3种
在这个“ajax树形菜单 动态显示”的项目中,我们关注的是如何利用Ajax技术来实现一个交互式的、只在需要时加载内容的树形菜单。 树形菜单是一种常见的用户界面元素,它通过层级结构来展示信息,常用于网站导航、...
树形菜单的核心在于其递归的结构,每个节点可以有零个或多个子节点,这些子节点又可以是树形结构的一部分。在JavaScript中,我们可以通过数组或者对象来表示这种结构。例如: ```javascript var menuData = [ { ...
例如,在一个企业管理后台,不同角色的用户可能只能看到和操作他们被授权的特定部分,这时就需要一个可以根据用户权限动态调整的树形菜单。 要使用dtree,首先需要在HTML文件中引入dtree的相关资源,通常是一个CSS...
在这个例子中,我们创建了一个包含两个父节点和两个子节点的简单树形菜单。`setting`对象用于配置zTree的行为,`zNodes`是树形结构的数据源。`$.fn.zTree.init`函数用于启动zTree,将指定的DOM元素(#treeDemo)转换...
本文将详细探讨如何使用LayUI实现树形菜单,并结合数据库脚本来构建一个实际的项目案例。 首先,我们需要理解LayUI的树形菜单组件。LayUI的树形菜单主要基于`layui.tree`模块,该模块提供了生成和操作树形结构的...
实现JavaScript树形菜单主要涉及以下几个关键技术点: 1. 数据结构设计:首先,我们需要定义一个数据结构来存储树形菜单的数据。通常,我们可以使用JSON对象来表示菜单节点,每个节点包含ID、文本、子节点数组等...
在IT领域,尤其是在网页开发中,树形菜单是一种常见的用户界面元素,用于组织和展示层次化的数据或导航结构。在JavaScript中实现树形菜单,我们可以利用DOM操作、事件监听以及数据结构来创建交互式和可扩展的菜单...
JS树形菜单源代码下载,JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码下载JS树形菜单源代码...
"多种树形菜单"这一主题聚焦于JavaScript中的dTree控件,它是一个强大且灵活的工具,专门用于创建这种交互式的树形菜单。 dTree控件的核心特性在于它的易用性和可扩展性。首先,dTree支持无限级别的分级,这意味着...
在这个主题中,我们将深入探讨JavaScript与Web树形菜单的关系,以及如何利用JavaScript创建无限级的树形菜单。 首先,让我们了解什么是树形菜单。树形菜单是一种以树状结构展现信息的界面组件,它允许用户通过展开...