Winform软件快速开发平台 - 关于数据权限,表格列权限控制两种解决方案
Winform软件快速开发平台 - 关于数据权限,表格列权限控制两种解决方案
什么是数据权限? 无论为数据操作赋予怎样的业务含义,其本质上仍然是数据的增删改查操作(如下图) 随着业务的演进,逐渐衍生出精细化管理数据的诉求。我遇到的业务场景是在企业级数据管理中,对不同职级的员工展示不同的数据。我的业务上的诉求是对SELECT进行权限控制,对INSERT、UPDATE、DELETE没有权限限制要求。 CSFramework软件快速开发平台提供两种数据权限解决方案: 一、通过【数据权限的角色】控制表格列的权限 就是定义一系列的角色,每个角色代表一个权限功能。假设我们定义一个【数据角色】Role的编号为:Data-PO, 角色名称:数据权限-采购订单采购价格,此角色用来控制【采购单价】【采购数量】列是否显示。 优点:操作简单,灵活运用,根据用户需求定制开发。 1.1 定义数据权限角色 CSFramework软件快速开发平台中的角色有4种类型:普通角色、系统角色、数据角色、扩展角色。 1.2 给用户分配数据权限角色 1.3 应用测试 原界面:单价、数量列可见。 执行数据权限逻辑控制后数量、单价列不可见: 二、通过【数据权限配置】界面由用户自行配置表格的数据权限 比如用户A限制查看采购订单的【采购单价】及【数量】,可以通过配置界面勾选【单价】【数量】列禁止显示。 优点:操作简单,灵活配置,强大的通用性。 执行数据权限逻辑控制后数量、单价列不可见: 三、使用数据权限、表格权限 3.1 若要支持表格权限,界面必须实现IFormGridPermission接口 C# Code: /// <summary> /// 支持配置表格权限的界面 /// </summary> public interface IFormGridPermission { /// <summary> /// 获取当前界面的表格实例 /// </summary> /// <returns></returns> List<GridPermissionItem> GetGrids(); /// <summary> /// 设置表格权限 /// </summary> void SetGridsPermission(); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 3.2 比如采购订单:实现IFormGridPermission接口 C# Code: public partial class frmPurchaseOrder : Form, IFormGridPermission { public frmGridTester() { InitializeComponent(); } //设置主表,明细表表格的权限 public void SetGridsPermission() { GridPermissionConfig.SetPermission(gvSummary); GridPermissionConfig.SetPermission(gvDetail); } //获取表格列表,用于配置权限 public List<GridPermissionItem> GetGrids() { List<GridPermissionItem> list = new List<GridPermissionItem>(); list.Add(new GridPermissionItem("采购订单主表-模拟测试使用", this.gvSummary)); list.Add(new GridPermissionItem("采购订单明细表-模拟测试使用", this.gvDetail)); return list; } //省略代码... } //来源:C/S框架网 | www.csframework.com | QQ:23404761 3.3 frmGridPermission表格权限配置界面加载表格列表: C# Code: /// <summary> /// 加载表格列表 /// </summary> private void LoadGrids() { //添加当前模块(系统管理模块)的表格实例 _AllGrids.AddRange((new frmDatasetMgr() as IFormGridPermission).GetGrids()); _AllGrids.AddRange((new frmDocNoRule() as IFormGridPermission).GetGrids()); //添加其他模块的表格实例 _AllGrids.AddRange(this.GetModuleGrids("CSFrameworkV5.Report.frmGridTester")); txtGrids.Properties.DisplayMember = "DisplayName"; txtGrids.Properties.ValueMember = "GridId"; txtGrids.Properties.DataSource = _AllGrids; } //来源:C/S框架网 | www.csframework.com | QQ:23404761 四、C#源码参考 4.1 在Form.Load事件内选择两种解决方案其中一种: C# Code: private void frmGridTester_Load(object sender, EventArgs e) { //通过【数据权限配置】设置表格列的权限 this.SetGridsPermission(); //通过【数据权限角色】设置表格列的权限 this.SetRolePermission(); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 4.2 控制表格列是否显示两种方案: C# Code: //方案1 private void SetRolePermission() { //检查当前登录的用户是否拥有特定权限(Data-PO) bool hasRole = new bllPermission().IsUserBelongRole(Loginer.CurrentUser.Account, "Data-PO"); if (hasRole) { //特定角色,隐藏相关列 gvDetail.Columns.Remove(colD_Price); gvDetail.Columns.Remove(colD_Quantity); } } //方案2 public void SetGridsPermission() { GridPermissionConfig.SetPermission(gvSummary); GridPermissionConfig.SetPermission(gvDetail); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 扫一扫加微信
参考文档:
标签:C# Winform+WebService+三层C/S结构快速开发平台 C#.Net快速开发平台|Winform快速开发平台介绍 Winform快速开发平台 ERP快速开发平台|ERP软件开发平台-C/S框架网 企业ERP应用快速开发平台软件框架 C# Winform软件快速开发框架|软件开发平台 - 界面多语言实现原理 C# Winform支持多语言界面切换的软件快速开发平台 软件开发与设计 - MIS-管理信息系统(力软快速开发平台数据库结构文档) Winform+DevExpress三层架构软件快速开发平台-旗舰版V5.1 C#.NET Winform轻量级UI框架软件快速开发平台(MySQL, Oracle, MsSQL) ERP快速开发工具软件-基于C/S架构Winform快速开发平台 MIS管理信息系统快速开发框架-C/S架构+Winform软件快速开发平台 Winform软件快速开发框架(使用DevExpress正版授权皮肤组件) ASP.NET Web开发框架, B/S架构软件快速开发平台 软件公司开发平台 - 15年致力于应用软件快速开发平台
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |