天天看點

瘋狂.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 指令