winform简易用户权限管理系统

news2024/11/18 6:01:27

一、功能简介

1. 数据库可使用sqlite、mssql、mysql等

2. 管理员账号不管控,其余账号进行权限管控(左侧菜单,表单按钮),且只能看到自己创建的角色、用户

二、操作界面

1. 管理员账号登陆后,左侧菜单栏自动添加 “菜单管理” ,菜单选择 Menu / Button

2. 角色分配权限

3. 用户绑定角色

4. 游客登陆后界面

三、数据库表

四、源码结构

五、权限控制代码

1. 菜单栏

复制代码

public static void SetTreeView(TreeView treeView1, ImageList imageList1, string checkList, bool onlyMenu = false)
        {
            if (null == checkList) checkList = string.Empty;

            treeView1.Nodes.Clear();
            treeView1.ImageList = imageList1;

            // 管理员特别权限
            if (onlyMenu && LoginUser.Root)
            {
                TreeNode tn = new TreeNode();
                tn.Text = "菜单管理";
                treeView1.Nodes.Add(tn);
            }

            var list = FreeSqlHelper.GetMenu();
            var parents = list.Where(o => o.ParentId == 0);
            foreach (var item in parents)
            {
                var id = item.Id.ToString();
                var nodeSign = GetSignTag(id);
                //
                TreeNode tn = new TreeNode();
                tn.Text = item.MenuTag;
                tn.Tag = id;
                tn.ImageIndex = 0; 
                //
                FillTree(tn, list, checkList, onlyMenu);
                //
                if (checkList.Contains(nodeSign))
                {
                    tn.Checked = true;// 菜单设置用
                }
                //
                if (onlyMenu)
                {
                    // 添加左菜单栏时用(只包含菜单,且有权限时展示)
                    if (EnumMenuType.Menu == (EnumMenuType)item.MenuType)
                    {
                        if (string.IsNullOrEmpty(checkList))
                        {
                            treeView1.Nodes.Add(tn);
                        }
                        else
                        {
                            if (checkList.Contains(nodeSign))
                            {
                                treeView1.Nodes.Add(tn);
                            }
                        }
                    }
                }
                else
                {
                    treeView1.Nodes.Add(tn);
                }
            }

            if (treeView1.Nodes.Count > 0)//展开一级节点
            {
                treeView1.Nodes[0].Expand();
            }
        }

复制代码

2. 表单按钮

复制代码

ToolStripButton btnAssign = new ToolStripButton();
        ToolStripTextBox txtQuery_Name = new ToolStripTextBox();
        ToolStripTextBox txtQuery_Tag = new ToolStripTextBox();

        public frmRole()
        {
            InitializeComponent();
            SetDataGridView();
            //
            // 控制按钮
            btnAssign = GetToolStripButton("btnAssign", "分配权限", Resources.btnAssign); 
            btnAssign.Click += new EventHandler(btnAssign_Click); 
            //
            // 查询按钮
            var label1 = new ToolStripLabel(); label1.Text = "角色名称"; toolStripQuery.Items.Insert(0, label1); toolStripQuery.Items.Insert(1, txtQuery_Name);
            var label2 = new ToolStripLabel(); label2.Text = "角色标记"; toolStripQuery.Items.Insert(2, label2); toolStripQuery.Items.Insert(3, txtQuery_Tag);
        }

        public void InitUI()
        { 
            if (!DataMgr.LoginUser.Root)
            {
                var roleMenu = DataMgr.LoginUser.RoleMenuNames.ToLower();
                btnAdd.Visible = roleMenu.Contains("add_role") ? true : false;
                btnEdit.Visible = roleMenu.Contains("edit_role") ? true : false;
                btnDelete.Visible = roleMenu.Contains("delete_role") ? true : false;
                btnAssign.Visible = roleMenu.Contains("assign_role") ? true : false;
            }
            //
            base.InitData();
        }

复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1352181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spark精讲】SparkSQL的RBO与CBO

Spark SQL核心:Catalyst Spark SQL的核心是Catalyst查询编译器,它将用户程序中的SQL/Dataset/DataFrame经过一系列操作,最终转化为Spark系统中执行的RDD。 Catalyst组成部分 Parser :用Antlr将SQL/Dataset/DataFrame转化成一棵未经解析的树…

怎么快速修复mfc140.dll文件?解决mfc140.dll缺失的方法

面对计算机报告的 ​mfc140.dll​ 文件遗失错误,这通常表明系统中缺少一个关键的动态链接库文件,该文件对于运行以 Microsoft Foundation Class (MFC) 库编写的程序十分重要,尤其是那些需要图形界面的应用程序和一些游戏。若没有这个文件&…

清风数学建模-数学规划模型

内容:数学规划模型(cab aeqbeq lbub) 一.题型类型 1.线性规划linprog 2.非线性规划 fmincon 3.整数规划 intlinprog 4.(0-1规划)(特殊的线性整数规划)intlinprog 5.多目标规划 linprog 标…

JumpServer3.0版本(用户管理、邮件、MFA认证配置)

创建用户组 控制台页面可以看见左侧的用户管理下,有用户列表和用户组 点击用户组、点击创建按钮、设置名称,用户不用选择还没建用户,提交即可 创建用户 点击用户列表创建按钮,设置名称、用户名、邮箱等必填项 这个时候用户组选项,可以选好我们创建的用户组了,先创用…

Spring高手之路-Spring Bean、Java Bean和对象的区别与联系

目录 什么是Spring Bean 什么是Java Bean 什么是对象 Spring Bean与Java Bean与对象的联系与区别 联系 区别 什么是Spring Bean 在Spring官方文档中对Bean的解释如下: In Spring, the objects that form the backbone of your application and that are manage…

MySQL数据库高级SQL语句及存储过程

目录 一、高级SQL语句 (一)case语句 1.语法定义 2.示例 (二)空值(NULL) 和 无值( ) 1.区别 2.示例 (1)字符长度 (2)判断方法 ① 空值(NULL) ② 无值( ) (3…

代码随想录算法训练DAY18|二叉树5

算法训练DAY18|二叉树5 513.找树左下角的值 力扣题目链接 给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 示例 2: 思路 本题要找出树的最后一行的最左边的值。此时大家应该想起用层序遍历是非常简单的了,反而用递归的话会比较难一点。 我…

【通关喜报】腾讯云TDSQL TCP/TCE、云运维tcp 12月认证考试,全员过关,年终冲刺!

2023年12月23日云贝教育有6位学员参加了腾讯云TDSQL-TCP以及TCE认证考试。都取得非常好的成绩~下面我们来看一下各位同学的理论考试和上机考试成绩吧~

BWP频域位置的确定

这里根据协议整理下BWP频域相关参数以及如何确定BWP的频域位置。 BWP的配置包含几个参数 : 1 SCS, CyclePrefix 和locationAndBandwidth。 BWP频域起始位置N_start_BWPOcarrierRBstart,其中Ocarrier 由RRC层参数offsetToCarrier决定。 locationAndB…

Java学习——设计模式——结构型模式2

结构型模式 结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能,但结构型模式不仅仅简单地使用继承,而更多地通过组合与运行期的动态组合来实现更灵活的功能。 包括: 1…

Redis命令---String篇 (超全)

目录 1.Redis Setnx 命令 - 只有在 key 不存在时设置 key 的值。简介语法可用版本: > 1.0.0返回值: 设置成功,返回 1 。 设置失败,返回 0 。 示例 2.Redis Getrange 命令 - 返回 key 中字符串值的子字符简介语法可用版本: > 2.4.0返回值: 截取得到…

vue3 接入 Element Plus

vue3 接入 Element Plus vue3 发布已经很久了,官方也已经发布公告,自2023年12月31日起停止对 vue2 版本的维护更新,因此,vue3 正式登上了历史的舞台。组件库一直是前端开发的利器,减少了开发者开发复杂度,提…

计算机毕业设计------基于SpringCloud的实验室管理系统

项目介绍 实验室管理系统的用户可以分为两种:系统管理员和普通用户。系统管理员主要功能: 登录登出、分析数据、管理用户、管理日志、管理实验室、管理预约、维护个人资料、实验室保修管理 用户主要功能: 注册登录、查询实验室、实验室预约…

Edge浏览器的卸载(一分钟版)

一分钟看完不耽误 开整工具下载后 结尾 开整 工具 Remove-MS-Edge 看名字,简单直接 CSDN下载 资源设置是免费的,大家尽管下载 不放心软件安全的话,自己上github地址下载也行 下载后 解压之后 我们打开有gui的,也就是有界面的&…

胡润研究院发布《2023胡润中国最具历史文化底蕴品牌榜》

胡润研究院发布《2023胡润中国最具历史文化底蕴品牌榜》,前十名分别是片仔癀、同仁堂、贵州茅台、五粮液、中国银行、中华、黄山、农业银行、建设银行、汾酒。 榜单调研范围涵盖中国内地具有60年以上历史的为消费者提供产品或服务的品牌,综合考察品牌历史…

polar CTF web upload tutu

一、题目 二、解题 1、上传两个一样的木马提示不是 setu(色图) 2、上传两个图,提示md5值不一样 综上他需要两张md5值相同的图 找工具 fastcoll 可生成两个md5值相同的文件 http://www.win.tue.nl/hashclash/fastcoll_v1.0.0.5.exe.zip 照…

编织Spring魔法:解读核心容器中的Beans机制【beans 一】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 编织Spring魔法:解读核心容器中的Beans机制【beans 一】 前言什么是Spring核心容器Beans的生命周期管理:初始化和销毁方法:各种作用域: beans的配置方式…

【Bidomain建模范式:Pansharpening】

Bidomain Modeling Paradigm for Pansharpening (泛锐化的Bidomain建模范式) 泛锐化是一个具有挑战性的低层次视觉任务,其目的是学习光谱信息和空间细节之间的互补表示。尽管取得了显着的进步,现有的基于深度神经网络&#xff0…

JVM内存模型理解

1、首先理解下什么是 jvm 内存模型? jvm内存模型定义了Java虚拟机运行时如何组织和管理内存,规定了各个内存区域的作用、结构和交互方式,以及线程间的内存可见性、内存操作的原子性等行为,以支持Java程序的执行,即一种…

以角色为基础的软件开发团队建设

角色抽象作为一种载体,可以很好地进行软件工程知识体系和企业知识地图的组织,满足企业知识体系持续改进的需要,因此角色团队组建和建设也可以作为软件工程实施方法之一。 软件开发项目立项时,重要工作之一就是开发团队的组建&…