用户权限树的建立及递归算法思路原则

经典权限管理算法 经典权限管理,可以控制每个模块不同用户的权限,思路很好 立即下载

*********权限思路:先把所有权限加载到Detree树中,然后根据数据库中用户角色和功能ID,给其拥有权限打上勾。修改时提交事件更新数据库。

*******关于更改权限:先批量删除所有功能,再批量插入。

类中的递归算法思路: 如果是调用类中某数据作为参数,并反回部分有用数据的递规,则先考虑反回整个类 ,再篇历该类,调用各对像的参数数据进行递规。

      如下:权限设置中以父节点ID得到所有子节点,进而递规得到所有子节点的子节点递归。用类处理,反回类对像集合,再调集合中的各对的父节点ID进行递规。 

1.在Sys_Right权限表中得到所有一级权限菜单

            public    Ilist<Sys_Right>     GetFirstMenu()

               {

                       string   sql="select * from Sys_Right where Right_Prent_Code=0";

                      return GetSys_RightBySql(sql);

                }

     2.根据父节点ID得到所有子节点

            public      Ilist<Sys_Right>   GetSonMenuByParentID( int  ParentID)

             {

                       string   sql="select * from Sys_Right where Right_Prent_Code="+parentID.ToString();

                      return GetSys_RightBySql(sql);

             }

    3.根据父节点ID递规得到所有子节点的方法

           public    string    GetAllMenuByParentId( int  ParentID)

            {

                      stringBuilder    sb= new StringBuilder();

                      Ilist<SyS_Right>  listRight= GetSonMenuByParentID( ParentID );  //  反回类对像    

                      foreach( Sys_Right   right    in    listRight)        // 遍历类对像

                         {

                                 int flag = BLL.Sys_role_rightManager.GetCheckExistRoleRight(this.RoleId, right.Id) ? 1 : 2; // 用于判断是detre中功能是否选中 详情见4

                                 sb.AppendFormat("tree.add('{0}', '{1}', '{2}', '', '', '',{3},'{4}','{5}');", right.Id,parentId, right.Right_text,

                                           flag,this.BaseUrl+"customerImg/CloseTree.gif",this.BaseUrl+"customerImg/OpenTree.gif");
                                  sb.Append( GetAllMenuByParentId( right.Id ) );              // 递归传弟类对像中的必要参数

                         }

                       return  sb.ToString();       

             }

      4.  根据角色ID和权限Id 在角色权限表中查询该用户角色是否含有此功能

          public   bool   GetCheckExistRoleRight( int RoleID, int RightId)

             {

                  string strsql = string.Format("select count(*) from Sys_role_right where Rf_role_no={0} and Rf_right_no={1}", Roleid, RightId);
                  return DBHelper.GetScalar(strsql) > 0;            // 如果反回0  无此功能,1有此 

              }

 

  5.显示所有功能于DeTree中,并将该用户拥有的功能打上勾

       /// <summary>
      /// 得到dtree js 的主体节点代码
      /// </summary>
     /// <returns></returns>
    private string GetTreeJsBody()
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        //得到所有的父节点
        IList<Models.Sys_right> rights = BLL.Sys_rightManager.GetFirstMenu();
        foreach (Models.Sys_right right in rights)
        {
            int flag = BLL.Sys_role_rightManager.GetCheckExistRoleRight(this.RoleId, right.Id) ? 1 : 2;
            sb.AppendFormat("tree.add('{0}', '0', '{1}', '', '', '',{2},'{3}','{4}');", right.Id, right.Right_text, flag, this.BaseUrl + "customerImg/CloseTree.gif", this.BaseUrl + "customerImg/OpenTree.gif");
            sb.Append(GetAllMenuByParentId(right.Id));
        }
        return sb.ToString();
    }

基于角色的权限管理数据库设计 基于角色的权限管理数据库设计。内有建表语句及测试语句。 立即下载

相关推荐

如何实现java递归 处理权限管理菜单树或分类

主要介绍了如何实现java递归 处理权限管理菜单树或分类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

权限设计与算法(总结)

 权限设计大概有这几种模式:用户+组+角色+权限用户+组+权限用户+角色+权限用户+权限最近看了别人的设计方法,大多以“整数”来表示权限值,如添加、浏览、删除和修改,分别用1、2、4、8这几个整数来代替,不过,各人的做法有所不同,举例如下:1. 用2的n次幂组成权限值的集合,如1、2、4、8、16...,某用户的权限值为其子集中的整数之和,如 7=1+2+4,5

志当存高远 967

AURIX™ TC3xx 调试口保护 secure debug

AURIX™ TC3xx 调试口保护 secure debug UCB_DBG_ORIG and UCB_DBG_COPY Content 使用Debug Password 保护调试接口设置 项目硬件接口保护方案 hexview Lock using UDE Unlockusing UDE Lock using Lauterbach Unlock using Lauterbach

2301_76563067的博客 6858

用户·角色·权限·表的设计

一.引言        因为做过的一些系统的权限管理的功能虽然在逐步完善,但总有些不尽人意的地方,总想抽个时间来更好的思考一下权限系统的设计。        权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统的权限进行设计,以满足不同系统用户的需求,将会浪费我们不少宝贵时间,所以花时间来设计一个相对通用的权限系统是很有意义的。 二.设计目标        设计一个

u013595377的专栏 2万+

WPS用户看过来:避开格式错乱坑,用WPS Office完美制作红头文件(2024最新版)

本文详细解析了WPS Office与Word在红头文件制作中的核心差异,提供了2024年最新版的零误差实战指南。从字体处理、页面布局到红头制作关键步骤,帮助用户避开格式错乱坑,确保跨设备显示一致。特别针对WPS用户优化,解决字体丢失、版式错位等常见问题。

weixin_26800111的博客 217

大模型之Spring AI实战系列(二十六):Spring Boot + DeepSeek 实战指南:构建AI聊天应用

在人工智能技术飞速发展的今天,大型语言模型已经成为了推动技术创新的重要力量。DeepSeek作为国内领先的大型语言模型提供商,其推出的DeepSeek系列模型在多个领域都展现出了卓越的性能。本文将详细介绍如何使用Spring Boot框架集成DeepSeek API,构建一个简单的AI聊天应用。我们将实现两个核心功能:普通文本生成和流式文本生成。

寻道AI,探索AI无限可能! 2264

linux设计账户的算法,linux中的用户与权限

Linux是一款支持多用户多进程的操作系统,为了实现对系统中资源的有效管理及分配,使用了登陆账户与对应账户权限的方式来限制每一个登陆Linux系统的使用者。使用者在登陆Linux系统时,会先对使用者进行身份认证(authentication),通过系统账号和密码来实现。用户登陆成功时,则会按照之前设定好的账户权限为使用者授权,规定了其可以访问、使用系统中的哪些资源(authorization)。同...

weixin_31716637的博客 216

YOLOv8改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用

本文记录的是利用优化的目标检测方法研究。深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks及其改进的实现代码如下: 四、创新模块 4.1 改进点⭐ 模块改进方法:直接加入(第五节讲解添加步骤)。模块加入如下:模块改进方法:基于的(第五节讲解添加步骤)。第二种改进方法是对中的进行改进,并将

Limiiiing的博客 1016

权限控制算法

向大家介绍一种很不错,也是Linux中的权限管理算法。  定义a^b为:a的b次方  假如,我们为每一个操作设定一个唯一的整数值,比如:删除A---0修改A---1添加A---2删除B---3修改B---4添加B---5。。。  理论上可以有N个操作,这取决于你用于储存用户权限值的数据类型了。  这样,如果用户有权限:添加A---2;删除B---3;修改B---4那用户的权限值 purview =

HERO 1211

微信小程序 - request:fail errcode:10011 cronet_error_code:0 error_msg:network change, cancel all task请求报错

微信小程序请求接口,报request:fail errcode:10011是什么原因,uniapp微信小程序request:fail errcode:10011 cronet_error_code:0 error_msg:network change, cancel all task,微信小程序wx.request常规访问接口,有个别用户的接口请求频繁报错,UniApp 微信小程序uni.request请求接口报错:request:fail errcode:10011 的原因分析与解决方案,苹果ios,安卓

🏆 前端领域优质创作者 4567

2025届程序技术类笔试题

希尔排序在直接插入排序的基础上进行了改进,它通过比较相距一定间隔的元素来进行,各轮比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一轮排序为止。某人逆着水流的方向向岸边划船,每次行进前进x米后需要休息一下,休息期间船会自行倒退y米,每次休息后再次行进,前进距离缩短1/5,若起始距离岸边为m米,问:能否到达岸上,需要行进多少次才能上岸。直接插入排序的原理是将第i个元素插入前面i-1个已排好序的记录中,将比第i个元素大的记录依次向后移动一个位置,将第i个元素插入空位。第二轮相邻比较,后移2次。

博客 595

AI如何帮你避免chmod 777的安全风险?

通过AI辅助的权限管理工具,我们可以大大降低因权限设置不当导致的安全风险。工具的自动化扫描和智能建议功能,让权限管理变得简单而高效。如果你想快速体验类似的功能,可以试试InsCode(快马)平台。它提供了便捷的在线开发环境,支持多种编程语言和工具,还能一键部署你的项目,非常适合快速验证和分享你的创意。在实际使用中,我发现平台的部署功能非常省心,无需手动配置环境,特别适合像我这样不想折腾服务器的小白用户。

JetRaven12的博客 1056

51智能小车(双轮)

前几天接了个小单子,是一个基于51单品机的作品,发现自己对小车的认识还是不太🆗。也算是完成了任了的;欢迎各位小伙伴来多多交流,大家一起进步。最后有需要单片机课程设计的小伙伴滴滴我哦(有偿)。企鹅:2397746994。

qq_56992543的博客 2346

uni-app树形组件开发指南:从数据结构到性能优化

树形结构是前端开发中处理层级数据的核心概念,它通过父子节点关系直观展示数据层次。其实现原理基于递归算法与组件化思想,将嵌套数据映射为可交互的视图。在跨端开发场景下,树形组件的技术价值尤为突出,它能显著提升管理后台、配置系统等复杂界面的开发效率。本文聚焦uni-app生态,深入探讨树形组件的设计模式与工程实践,涵盖**递归渲染**与**级联选择**等关键机制,解析如何构建高性能、可定制的解决方案,以应对权限管理、组织架构等实际业务需求。

weixin_30983353的博客 297

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

函数模块化重构多级菜单:从意大利面条代码到清晰架构的实践

在软件开发中,处理树形数据结构是常见的需求,例如后台管理系统的导航菜单、权限配置树或商品分类。其核心原理是将具有层级关系的节点组织成嵌套结构,通常涉及递归遍历、父子关系映射和状态管理。函数模块化是一种重要的软件设计思想,它通过将复杂逻辑拆分为职责单一、可复用的纯函数单元,显著提升代码的可维护性、可测试性和可扩展性。这种技术价值在于能够将原本高度耦合的“面条式代码”重构为清晰的数据处理流水线,从而优雅地应对业务逻辑的动态变化。本文以多级菜单这一典型应用场景为例,详细阐述了如何通过数据标准化、树形构建、权限过滤

weixin_34242819的博客 756

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

React-Admin企业级后台管理系统架构设计与实现深度解析

在现代企业应用开发中,后台管理系统作为核心支撑平台,面临着权限管理、动态配置、模块复用等多重技术挑战。传统的后台系统开发往往陷入重复造轮子的困境,开发效率低下,维护成本高昂。React-Admin项目正是针对这些痛点而设计的全栈解决方案,它基于现代化的技术栈,提供了一套完整的权限控制体系和动态配置能力。 React-Admin采用React 18、TypeScript 5.0、Ant Desig

gitblog_01088的博客 634

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java Composite模式实战:树形结构设计与组织架构实现

树形结构是软件开发中描述层级关系的基础模型,其核心在于统一处理容器与叶子节点的一致性抽象。Composite模式通过定义公共接口、递归委托和运行时多态,解决了Java中因泛型擦除、无指针、单继承等语言特性带来的类型管理与扩展难题。该模式显著降低代码腐化速度,支撑动态组织架构、虚拟项目组、跨部门协作等复杂业务场景,在Spring配置、MyBatis嵌套映射、权限树等主流框架中深度集成。本文以可运行的Java组织系统为例,详解接口契约设计、叶子/组合节点实现、循环引用防护及泛型增强技巧。

diaohuyi6830的博客 415

RBAC权限系统实战:从数据库设计到前后端实现

权限管理是保障系统数据安全与操作规范的核心机制,其核心原理是通过对用户访问资源的控制来防止越权操作。基于角色的访问控制(RBAC)模型通过将权限赋予角色、再将角色分配给用户,实现了权限的灵活分配与批量管理,有效提升了系统的安全性与可维护性。在技术实现上,RBAC模型的价值在于其清晰的层级结构,能够支撑从企业ERP到电商后台等多种应用场景的复杂权限需求。本文将深入探讨如何将RBAC理论落地为工程实践,涵盖数据库表结构设计、基于Spring Security与JWT的后端鉴权、以及前端Vue框架下的动态路由与按

weixin_30755393的博客 297

Mythos安全模型:AI驱动的自动化漏洞挖掘与红队能力工程化

AI安全模型正从代码补丁生成工具,演进为具备纵深推理、跨语言语义对齐和动态行为模拟能力的自动化漏洞挖掘系统。其核心原理在于融合符号执行、终端交互建模与真实攻击链规划,突破传统SAST/DAST在逻辑漏洞识别、多层技术栈穿透和业务上下文理解上的局限。技术价值体现在将渗透测试从人工密集型任务转化为可重复、可审计、可集成CI/CD的安全流水线环节,显著降低高危漏洞响应延迟与人力成本。典型应用场景覆盖金融核心系统、医疗HIS、工业PLC等遗留系统安全加固,以及开源项目AI原生安全协作。Mythos代表了AI安全从‘

weixin_34367257的博客 410

通过Java实现一种常用的权限控制算法

这里笔者介绍一种很常用,也比较专业的权限控制思路。这里用java语言描述,其实都差不多的。要换成其他的语言主,自己转一下就可以了。为了方便起见,我们这里定义a^b为:a的b次方。这里,我们为每一个操作设定一个唯一的整数值,比如:删除A---0修改A---1添加A---2  

zh029t的专栏 1364

RBAC的用户权限管理原理

欢迎点击「算法与编程之美」↑关注我们!本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。1 问题描述当我们谈到一个应用或者网站的时候,一般情况下...

算法与编程之美 1061

权限算法

1.某个模块的操作权限值 添加(2的0次方)1 删除(2的1次方)2 更新(2的2次方)4 查询(2的3次方)8 2.如果用户同时具有添加和删除的功能,那么此用户权限和为 2^0+2^1=3 3.判断权限时,假设要验证用户是否具有添加的功能,那么只需要验证 1&3 如果值为1说明用户有这个权限,如果不等于1说明用户不具有添加的权限 ...

learnmore的实验田 219

Vue2.0权限树的实现

Vue2.0权限树的实现一、权限树是为了校验用户权限的树形组件二、能够解决项目中的权限控制问题,即同一组织的不同用户有不同的权限,并在树型组件中展示出来。三、具体的demo代码和操作四、总结五、解决合并中的冲突六、撤销一个合并七、多路合并 一、权限树是为了校验用户权限的树形组件 二、能够解决项目中的权限控制问题,即同一组织的不同用户有不同的权限,并在树型组件中展示出来。 三、具体的demo代码和操作 树形组件 四、总结 git会把所有可以自动合并的修改加入到索引中去, 所以git diff只会显示有冲突的部

qq_41312632的博客 1196
上一篇: java web简单权限管理设计 (递归用法)
下一篇: 用SpringMVC 框架权限 导航菜单和 增加新用户 给新用户角色 给角色增加权限
WhtBk
博客等级 码龄11年 12粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值