疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 --- 操作权限

简介:
我的目标就是,权限想定义什么权限就定义什么权限,想搞几个权限就搞几个
权限,只要一行代码就可以在程序里准确判断,用最少的参数,用最最简单的
方法,通用程序判断程序运行得铜墙铁壁一样稳定,这就是我的追求。

废话少说我主要讲解的7个方向为:

1。操作权限,按钮级权限
2。角色的判断,用户是否属于某个角色的判断 
3。拒绝权限,反正常思维的权限
4。单元格权限,脑筋急转弯的权限处理方式
5。数据列权限,字段列级权限
6。数据集过滤权限,数据行级过滤权限
7。页面级权限,模块菜单权限处理

试验步骤如下:
(一)我通过疯狂.NET通用权限后台管理,给用户 吉日嘎拉,配置操作权限。


(2)给用户 吉日嘎拉,配置如下页面中所选中的操作权限。
 



(3)把用户 吉日嘎拉,归属于 “咨询顾问”这个角色,当然也可以用英文命名的,为了简单我就用中文命名吧。


(4)我创建B\S项目,在 B\S 项目里引用我的通用权限的类库,劳动成果重复利用,不用每次都写了,
我的代码又可以在B、S项目里用,用可以在C\S项目里用,还可以支持多种数据库,这就是我骄傲的牛B之处。


(5)我在B\S项目,编写的代码效果。


(6)我在B\S项目,运行程序后的效果,这里有2排按钮,运行的结果与我们设置的效果是完全符合的。


(7)我在B\S项目,中写的源码如下,供您参考:



  1  // ------------------------------------------------------------
  2  //  All Rights Reserved , Copyright (C) 2009 , Jirisoft , Ltd. 
  3  // ------------------------------------------------------------
  4 
  5  using  System;
  6  using  System.Collections.Generic;
  7  using  System.Web;
  8  using  System.Web.UI;
  9  using  System.Web.UI.WebControls;
 10 
 11  namespace  JiriSoft.Permission
 12  {
 13       using  DotNet.Common;
 14       using  DotNet.Common.Utilities;
 15       using  DotNet.Common.DbUtilities;
 16       using  DotNet.Common.Model;
 17       using  DotNet.Common.Business;
 18       using  DotNet.Common.Service;
 19 
 20       ///   <remarks>
 21       ///  _Default
 22       ///  
 23       ///  修改纪录
 24       ///  
 25       ///     版本:1.0 2009.09.06    JiRiGaLa    创建。
 26       ///     
 27       ///  版本:1.0
 28       ///   <author>
 29       ///          <name> JiRiGaLa </name>
 30       ///          <date> 2009.09.06 </date>
 31       ///   </author>  
 32       ///   </remarks>
 33       public   partial   class  _Default : BasePage
 34      {
 35           ///   <summary>
 36           ///  用户的登录操作模拟
 37           ///   </summary>
 38           private   void  UserLogin()
 39          {
 40               this .Login( " jirigala " , String.Empty);
 41          }
 42 
 43           ///   <summary>
 44           ///  测试数据连接
 45           ///   </summary>
 46           private   void  CheckDbConnection()
 47          {
 48               try
 49              {
 50                   //  打开数据库
 51                   this .DbHelper.Open();
 52                   //  把数据库里的密码都设置为空
 53                  String sqlQuery  =   "  UPDATE  "   +  BaseUserTable.TableName  +   "  SET  "   +  BaseUserTable.FieldUserPassword  +   "  = NULL  " ;
 54                   //  执行数据库更新语句
 55                   this .DbHelper.ExecuteNonQuery(sqlQuery);
 56                   //  事务开始
 57                   this .DbHelper.BeginTransaction();
 58                   //  事务递交
 59                   this .DbHelper.CommitTransaction();
 60              }
 61               catch
 62              {
 63                   //  事务回滚
 64                   this .DbHelper.RollbackTransaction();
 65              }
 66               finally
 67              {
 68                   //  关闭数据库连接
 69                   this .DbHelper.Close();
 70              }
 71          }
 72 
 73           ///   <summary>
 74           ///  显示当前用户的信息
 75           ///   </summary>
 76           private   void  ShowCurrentUserInfo()
 77          {
 78               this .lblUserInfo.Text  =   " 用户的主键: "   +   this .UserInfo.ID  +   " <br> "
 79                   +   " 用户名: "   +   this .UserInfo.Username  +   " <br> "
 80                   +   " 姓名: "   +   this .UserInfo.Realname  +   " <br> "
 81                   +   " 用户的公司主键: "   +   this .UserInfo.CompanyID  +   " <br> "
 82                   +   " 用户的公司名称: "   +   this .UserInfo.CompanyFullName  +   " <br> "
 83                   +   " 用户的部门主键: "   +   this .UserInfo.DepartmentID  +   " <br> "
 84                   +   " 用户的部门名称: "   +   this .UserInfo.DepartmentFullName  +   " <br> "
 85                   +   " 用户的工作组主键: "   +   this .UserInfo.WorkgroupID  +   " <br> "
 86                   +   " 用户的工作组名称: "   +   this .UserInfo.WorkgroupFullName  +   " <br> " ;
 87 
 88          }
 89 
 90           ///   <summary>
 91           ///  获得用户的权限
 92           ///   </summary>
 93           private   void  GetPermission()
 94          {
 95               this .DbHelper.Open();
 96 
 97               //  用户的操作权限
 98               this .btnUserAdd.Enabled      =   this .IsAuthorized( " User.Add " );
 99               this .btnUserDelete.Enabled   =   this .IsAuthorized( " User.Delete " );
100               this .btnUserExport.Enabled   =   this .IsAuthorized( " User.Export " );
101               this .btnUserImport.Enabled   =   this .IsAuthorized( " User.Import " );
102               this .btnUserPrint.Enabled    =   this .IsAuthorized( " User.Print " );
103               this .btnUserUpdate.Enabled   =   this .IsAuthorized( " User.Update " );
104               //  角色的操作权限
105               this .btnRoleAdd.Enabled      =   this .IsAuthorized( " Role.Add " );
106               this .btnRoleDelete.Enabled   =   this .IsAuthorized( " Role.Delete " );
107               this .btnRoleExport.Enabled   =   this .IsAuthorized( " Role.Export " );
108               this .btnRoleImport.Enabled   =   this .IsAuthorized( " Role.Import " );
109               this .btnRolePrint.Enabled    =   this .IsAuthorized( " Role.Print " );
110               this .btnRoleUpdate.Enabled   =   this .IsAuthorized( " Role.Update " );
111 
112               this .DbHelper.Close();
113          }
114 
115           protected   void  Page_Load( object  sender, EventArgs e)
116          {
117               if  ( ! Page.IsPostBack)
118              {
119                   //  测试数据连接
120                   this .CheckDbConnection();
121                   //  用户的登录操作模拟
122                   this .UserLogin();
123                   //  显示当前用户的信息
124                   this .ShowCurrentUserInfo();
125                   //  获得用户的权限
126                   this .GetPermission();
127              }
128          }
129      }
130  }
131 

当然你也可以把  private   void  GetPermission()  函数进行以下优化,搞个循环遍历啥的,
能自动绑定权限状态,那就彻底全自动绑定操作权限了,不用每个人都自己写对应的权限
判断了,我不喜欢那么万能的东西,还是喜欢想怎么控制就怎么控制。

下载相应的数据库点这里: /Files/jirigala/DotNet.Common_DB.rar
下载相应的演示程序源码,请堤点这里: /Files/jirigala/JiriSoft.Permission.rar

导读:
通过命名空间的细微差别,很直白的讲个人的那么点儿小算盘、个人的小利益与公司的大利益
疯狂.NET架构通用权限后台管理工具演示版2.0下载
通用权限实现的核心设计思想  
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 在页面中的调用权限讲解
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 数据集权限的调用权限讲解
标准权限模型RBAC与实际日常开发工作结合后,我对RBAC模型的改进优化研究成果分享  






本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/448330,如需转载请自行联系原作者

相关文章
|
3月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
219 3
|
3月前
|
前端开发 JavaScript 关系型数据库
使用 OpenAuth.Net 快速搭建 .NET 企业级权限工作流系统
使用 OpenAuth.Net 快速搭建 .NET 企业级权限工作流系统
110 0
|
3天前
|
开发框架 安全 .NET
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
.NET Framework是Windows平台的开发框架,包含CLR和FCL,支持多种语言开发桌面、Web应用。常用版本有3.5、4.5.2、4.8.1,系统可同时安装多个版本,确保软件兼容运行。
152 0
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
|
2月前
.NET Framework 3.5离线安装包合集下载
本文介绍了如何获取和安装.NET Framework运行库离线合集包。用户可通过提供的链接下载安装包,安装过程简单,按提示逐步操作即可完成。安装时可选择所需版本,工具会自动适配架构,无需手动判断,方便高效。
848 0
|
7月前
|
存储 XML 开发工具
【Azure Storage Account】利用App Service作为反向代理, 并使用.NET Storage Account SDK实现上传/下载操作
本文介绍了如何在Azure上使用App Service作为反向代理,以自定义域名访问Storage Account。主要内容包括: 1. **设置反向代理**:通过配置`applicationhost.xdt`和`web.config`文件,启用IIS代理功能并设置重写规则。 2. **验证访问**:测试原生URL和自定义域名的访问效果,确保两者均可正常访问Storage Account。 3. **.NET SDK连接**:使用共享访问签名(SAS URL)初始化BlobServiceClient对象,实现通过自定义域名访问存储服务。
105 3
|
10月前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
431 13
|
Ubuntu 持续交付 API
如何使用 dotnet pack 打包 .NET 跨平台程序集?
`dotnet pack` 是 .NET Core 的 NuGet 包打包工具,用于将代码打包成 NuGet 包。通过命令 `dotnet pack` 可生成 `.nupkg` 文件。使用 `--include-symbols` 和 `--include-source` 选项可分别创建包含调试符号和源文件的包。默认情况下,`dotnet pack` 会先构建项目,可通过 `--no-build` 跳过构建。此外,还可以使用 `--output` 指定输出目录、`-c` 设置配置等。示例展示了创建类库项目并打包的过程。更多详情及命令选项,请参考官方文档。
697 13
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
253 2
|
自然语言处理 C# 图形学
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
208 0
|
12月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
858 0