winform简易用户权限管理系统

一、功能简介

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.mzph.cn/news/593078.shtml

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

相关文章

基于矩阵乘的CUDA编程优化过程

背景:网上很多关于矩阵乘的编程优化思路,本着看理论分析万遍,不如实际代码写一遍的想法,大概过一下优化思路。 矩阵乘的定义如下,约定矩阵的形状及存储方式为: A[M, K], B[K, N], C[M, N]。 CPU篇 朴素实现方法 按照…

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

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

2024年个人工作计划怎么写?新年待办计划这样写更方便

元旦的钟声还在耳边回响,2024年的新篇章已经开启。面对新的一年,我深知一个清晰、实用的个人工作计划是多么重要。它不仅是指引我前进的灯塔,更是我实现目标、提升效率的秘密武器。 但如何制定这样一个计划呢?在过去,…

嵌入式开发——ADC开发

学习目标 了解ADC开发流程掌握采样方式能够使用ADC进行芯片内部通道进行采样能够使用ADC对外部电路进行采样学习内容 GD32F4的ADC 特点: 16个外部模拟输入通道;1个内部温度传感通道(VSENSE);1个内部参考电压输入通道(VREFINT);1个外部监测电池VBAT供电引脚输入通道。ADC开…

《工具录》nslookup

工具录 1:nslookup2:选项介绍3:示例 - 命令行模式3.1:查询类型设置3.2:指定 DNS 服务器 4:示例 - 交互模式5:其他 本文以 kali-linux-2023.3-vmware-amd64 为例。 1:nslookup nsloo…

算法29:不同路径问题(力扣62和63题)--针对算法28进行扩展

题目:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff0…

什么是安全信息和事件管理(SIEM),有什么用处

安全信息和事件管理(SIEM)对于企业主动识别、管理和消除安全威胁至关重要。SIEM 解决方案采用事件关联、AI 驱动的异常检测以及机器学习驱动的用户和实体行为分析 (UEBA) 等机制来检测、审查和应对网络安全威胁。这些功能使 SIEM …

AntDB设计之CheckPoint——引言与功能简述

1.引言 数据库服务能力提升是一项系统性的工程,在不同的应用场景下,用户对于数据库各项能力的关注点也不同,如:读写延迟、吞吐量、扩展性、可靠性、可用性等等。国内不少数据库系统通过系统架构优化、硬件设备升级等方式&#xf…

数据库课程设计报告——音乐管理系统

目录 省流版word文档需求分析系统目标业务需求及处理流程功能需求及数据需求分析业务规则分析 概念设计命名规范实体集及属性联系集及属性系统总ER图 逻辑设计关系的设计关系的优化数据库基本表设计 物理设计关系模式存取方式选择数据库的存储结构 数据库应用设计数据库脚本数据…

VS2022 Android NativeActivity 开发指南

几年前最初使用VS时,记得是有Android NativeActivity的,今天更新到了2022最新版,发现找不到这个创建选项。 然后确保安装了C 跨平台开发工具后,开始排查原因。 Visual Studio 2022 中没有“本机活动应用程序” - android - SO中…

【Linux操作系统】探秘Linux奥秘:进程与任务管理的解密与实战

🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS &…

4462 4.曙曙献爱心

#include<bits/stdc.h> using namespace std; int n,m,k; int a[1001]; int s[1001]; int f[1001][1001];//f[i][j]&#xff0c;i个警察&#xff0c;j个点&#xff0c;能管理的最大人数 int main(){cin>>n>>m>>k;for(int i1;i<n;i){cin>>a[i…

大数据StarRocks(一) StarRocks概述

1 StarRocks介绍 StarRocks是新一代极速全场景MPP(Massively Parallel Processing)数据库&#xff0c;它充分吸收关系型OLAP数据库和分布式存储系统在大数据时代的优秀研究成果&#xff0c;在业界实践的基础上&#xff0c;进一步改进优化、升级架构&#xff0c;并增添了众多全…

Java学习,一文掌握Java之SpringBoot框架学习文集(2)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

Docker 安装Mysql

目录 Docker Mysql安装 ✨安装和配置mysql ✨远程连接mysql远程连接 MySQL 是世界上最流行的开源数据库。根据 DB-Engines的调查数据&#xff0c;MySQL 是第二受欢迎的数据库&#xff0c;仅次于 Oracle 数据库。MySQL在过去由于性能高、成本低、可靠性好&#xff0c;已经成…

Redis缓存保卫战:拒绝缓存击穿的进攻【redis问题 三】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Redis缓存保卫战&#xff1a;拒绝缓存击穿的进攻 前言缓存击穿的定义和原理为何会发生缓存击穿缓存击穿的危害防范缓存击穿结语: 前言 你是否曾经遇到过系统在高并发情况下出现严重性能问题&#xff…

云卷云舒:基于业务逻辑关联度实现数据预加载

云卷云舒&#xff1a;算力网络云原生&#xff08;下&#xff09;&#xff1a;云数据库发展的新篇章-CSDN博客 一、现有技术的技术方案 在实现一个具有复杂业务逻辑的应用系统时&#xff0c;大多数情况下&#xff0c;编码过程中必定会包含着较多的数据访问方法&#xff08;java…

MES是什么?有了MES还要上ERP或MES吗?

MES是什么 MES是Manufacturing Execution System&#xff08;制造执行系统&#xff09;的简称&#xff0c;是一套面向制造企业车间执行层的生产信息化管理系统&#xff0c;负责承接ERP系统下达的生产计划&#xff0c;与ERP关系密切。MES能通过信息传递&#xff0c;做到生产追溯…

亚马逊、速卖通等跨境平台如何利用自养号测评提升销量

一、自然排名&#xff1a;链接成功的关键 自然排名的重要性不言而喻。一个链接的成功与否&#xff0c;关键在于其自然排名是否能够打上来。无论是搜索流量还是关联流量的自然排名&#xff0c;亦或是BSR排行榜&#xff0c;都应时刻关注这些自然排名的变化。 二、自然排名的位置…

Unity 2022 版本 寻路 NavMesh

官方教程地址 https://docs.unity3d.com/Packages/com.unity.ai.navigation1.1/manual/index.html 首先装包 先给地图 和 阻挡 设置为静态 然后给地上行走的地方 添加组件 可以直接bake 然后会显示蓝色的可行走路径 player 添加插件 然后给角色添加脚本 using System.Co…