天天看点

疯狂.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() 函数进行以下优化,搞个循环遍历啥的,

能自动绑定权限状态,那就彻底全自动绑定操作权限了,不用每个人都自己写对应的权限

判断了,我不喜欢那么万能的东西,还是喜欢想怎么控制就怎么控制。

导读:

<a href="http://www.cnblogs.com/jirigala/archive/2009/02/07/1385659.html" target="_blank">通过命名空间的细微差别,很直白的讲个人的那么点儿小算盘、个人的小利益与公司的大利益</a>

<a href="http://www.cnblogs.com/jirigala/archive/2009/09/04/1560210.html" target="_blank">疯狂.NET架构通用权限后台管理工具演示版2.0下载</a>

<a href="http://www.cnblogs.com/jirigala/archive/2009/07/20/1527302.html" target="_blank">一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限</a>

<a href="http://www.cnblogs.com/jirigala/archive/2009/07/20/1527241.html" target="_blank">一步步教你如何用疯狂.NET架构中的通用权限系统 -- 在页面中的调用权限讲解</a>

<a href="http://www.cnblogs.com/jirigala/archive/2009/09/01/1558020.html" target="_blank">一步步教你如何用疯狂.NET架构中的通用权限系统 -- 数据集权限的调用权限讲解</a>

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

上一篇: docker 安装
下一篇: pipeline 指令