`
可执行
  • 浏览: 17394 次
  • 性别: 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树形菜单

    这个压缩包“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技术来实现一个交互式的、只在需要时加载内容的树形菜单。 树形菜单是一种常见的用户界面元素,它通过层级结构来展示信息,常用于网站导航、...

    好看实用js树形菜单

    树形菜单的核心在于其递归的结构,每个节点可以有零个或多个子节点,这些子节点又可以是树形结构的一部分。在JavaScript中,我们可以通过数组或者对象来表示这种结构。例如: ```javascript var menuData = [ { ...

    dtree写的动态树形菜单

    例如,在一个企业管理后台,不同角色的用户可能只能看到和操作他们被授权的特定部分,这时就需要一个可以根据用户权限动态调整的树形菜单。 要使用dtree,首先需要在HTML文件中引入dtree的相关资源,通常是一个CSS...

    jquery 树形菜单

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

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

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

    JavaScript实现树形菜单

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

    javascript 树形菜单

    在IT领域,尤其是在网页开发中,树形菜单是一种常见的用户界面元素,用于组织和展示层次化的数据或导航结构。在JavaScript中实现树形菜单,我们可以利用DOM操作、事件监听以及数据结构来创建交互式和可扩展的菜单...

    JS树形菜单源代码下载

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

    多种树形菜单

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

    JavaScript与web树形菜单全

    在这个主题中,我们将深入探讨JavaScript与Web树形菜单的关系,以及如何利用JavaScript创建无限级的树形菜单。 首先,让我们了解什么是树形菜单。树形菜单是一种以树状结构展现信息的界面组件,它允许用户通过展开...

Global site tag (gtag.js) - Google Analytics