中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET中怎么設計系統用戶權限

發布時間:2021-08-07 11:07:37 來源:億速云 閱讀:107 作者:Leah 欄目:編程語言

本篇文章為大家展示了ASP.NET中怎么設計系統用戶權限,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

ASP.NET概述

1、ASP.NET

ASP.NET是微軟流行的動態WEB編程技術活動服務器網頁(ASP)的***版本,但它遠不是傳統ASP簡單升級。ASP.NET和ASP的***區別在于編程思維的轉換,ASP.NET是真正的面向對象(Object-oriented),而不僅僅在于功能的增強。

在ASP.NET中,Web 窗體頁由兩部分組成:視覺元素(HTML、服務器控件和靜態文本)和該頁的編程邏輯。其中每一部分都存儲在一個單獨的文件中。可視元素在一個擴展名為 .aspx 文件中創建,而代碼位于一個單獨的類文件中,該文件稱作代碼隱藏類文件擴展名為.aspx.vb 或 .aspx.cs。這樣,.aspx文件中存放所有要顯示的元素,aspx.vb或.aspx.cs文件中存放邏輯。

2、用戶控件(UserControl)

為了使用戶能夠根據需要方便地定義控件,ASP.NET引入了 Web 窗體用戶控件的概念。實際上,只要將.aspx稍作修改即可轉換為 Web 用戶控件,擴展名為 .ascx,.ascx和.aspx文件一樣也有一個存放邏輯的代碼隱藏類文件,擴展名為.ascx.vb或.ascx.cs,只是它不能作為獨立 Web 窗體頁來運行,只有當被包含在 .aspx文件中時,用戶控件才能工作。

通過以下兩個步驟在WEB窗體頁中設置用戶控件:

(1)使用@ Register指令在.aspx文件中注冊用戶控件。如要注冊在放在相對路徑“../UserControl/”下的頭文件headinner.ascx的方法為:

〈%@ Register TagPrefix="Acme"   TagName="Head" Src="../UserControl/headinner.ascx" %〉

2)在服務器控件的開始標記和結束標記之間(〈form runat=server 〉〈/form 〉) 聲明該用戶控件元素。例如要聲明上面所導入的控件的語法為:

〈Acme: Head runat="server"/ 〉

這樣,該控件就成為頁的一部分,并將在處理該頁時呈現出來。并且,該控件的公共屬性、事件和方法將向 Web 窗體頁公開并且可以通過編程來使用。根據這個原理,就可以將每個頁面初始化時所要執行的操作(如登錄驗證,角色驗證)封裝在用戶控件當中。

RBAC的基本思想

RBAC(角色訪問控制)的基本思想可簡單地用圖1來表示,即把整個ASP.NET系統用戶權限訪問控制過程分成兩步:訪問權限與角色相關聯,角色再與用戶關聯,從而實現了用戶與訪問權限的邏輯分離。

由于RBAC實現了用戶與訪問權限的邏輯分離,因此它極大的方便了權限管理。例如,如果一個用戶的職位發生變化,只要將用戶當前的角色去掉,加入代表新職務或新任務的角色即可,角色/權限之間的變化比角色/用戶關系之間的變化相對要慢得多,并且委派用戶到角色不需要很多技術,可以由行政管理人員來執行,而配置權限到角色的工作比較復雜,需要一定的技術,可以由專門的技術人員來承擔,但是不給他們委派用戶的權限,這與現實中情況正好一致。

ASP.NET系統用戶權限在.NET中的設計與實現

利用.NET中的用戶控件實現權限控制的基本思想是:根據角色訪問控制(RBAC)的基本原理,給用戶分配一個角色,每個角色對應一些權限,然后利用ASP.NET中的用戶控件(UserControl)來判斷該用戶對應的角色是否對訪問頁面有訪問的權力。

下面將從數據庫設計、添加角色和用戶控件的使用等三方面來闡述具體ASP.NET系統用戶權限實現過程。

1、數據庫中表的設計

首先,在數據庫中設計功能模塊表、功能表和角色表等三個表。

(1) 功能模塊表

為了管理好用戶的權限,首先要組織好系統的模塊,為此設計了一個功能模塊表。見表1。

ASP.NET中怎么設計系統用戶權限

(2) 功能表

ASP.NET中怎么設計系統用戶權限

每個功能模塊所具有的子功能稱為功能,如商品管理模塊goods(屬于功能模塊的范疇)包含商品信息查詢、商品信息更新、商品信息刪除、商品定價信息查詢以及商品定價信息更新五種功能,功能表的設計見表2。

上面提到的例子可以作為這樣幾條記錄分別插入功能模塊表和功能表。

ASP.NET中怎么設計系統用戶權限

insert into TModule values(0,'商品管理模塊','goods',5);

insert into Tfunction values(0,'商品信息查詢','selectgoods',0);

insert into Tfunction values(1,'商品信息更新','updategoods',0);

insert into Tfunction values(2,'商品信息刪除','deletegoods',0);

insert into Tfunction values(3,'商品定價信息查詢','selectgoodsprice',0);

insert into Tfunction values(4,'商品定價信息更新','updategoodsprice',0);

(3) 角色表

ASP.NET中怎么設計系統用戶權限

角色表的設計關鍵在于角色值的定義,它是一個由0和1組成的類似二進制數的字符串。而功能表中的funcNo (功能編號)字段表示該功能在角色表的roleValue (角色值)字段中的位置,如果該位置對應的數值是0,表示該角色無此權限,如果值為1,則表示該角色擁有此權限。如角色普通會員的角色值為100100…00(共100位),如上所示,商品信息查詢的功能編號為0,角色值100100…00的第0位為1,所以該普通會員角色擁有商品信息查詢的功能;相反,該角色值的第1位為0,而功能編號為1 的功能為商品信息更新,所以該普通會員角色沒有商品信息更新的權限。它們的關系可由圖2來表示。

ASP.NET中怎么設計系統用戶權限

2、角色的添加

有了上面幾個表,角色頁面的功能模塊以及其對應的功能都可以從功能模塊表和功能表中讀出,如圖3所示。

ASP.NET中怎么設計系統用戶權限

在將新角色普通會員插入數據庫時,先將角色值的所有位都置為0,然后利用.NET Framework 類庫中的Replace函數將角色值中的打上勾的功能相應的功能編號位的值改為1。

例如,新添加一個角色名為普通會員的角色,它擁有的功能為商品信息查詢(功能編號0)和商品定價信息查詢(功能編號3)兩項,則角色值應為1001000……00(100位),即角色值中第0位和第3位的值為1,其余為0。

3、利用用戶控件實現訪問權限

在定義好用戶控件.ascx文件(head.ascx)及.ascx.cs(head.ascx,cs)文件時,接下去只要在.aspx文件中注冊和聲明它就可以了。

(1) 注冊

〈 %@ Register TagPrefix="Acme" TagName="Head"   Src="../UserControl/headinner.ascx" % 〉

(2) 聲明

經過實踐,在.aspx文件中聲明.ascx文件可分為幾種情況:

***種情況:〈 Acme:Head runat="server" / 〉   第二種情況:〈 Acme:Head runat="server"   flag=0 funcname1=selectgoods funcname2=updategoods / 〉   第三種情況:〈 Acme: Head runat="server" flag=1   funcname1= selectgoods funcname2=updategoods / 〉

字段flag是用來控制怎樣進行權限檢查的標志,funcname指功能表中的功能英文名。如果flag為空,則不執行權限檢查(***種情況);否則如果flag=="0",則表示同時具有selectgoods(商品信息查詢)和 updategoods(商品信息更新)這兩種權限的角色所對應的用戶才有權利查看該頁(第二種情況);否則,如果flag=="1",則認為,具有selectgoods(商品信息查詢)或 updategoods(商品信息更新)這兩種權限中任意一種權限的用戶就有權利查看該頁(第三種情況)。

上面進行權限檢查的過程全部由用戶控件來實現,其全部方法都封裝在.ascx.cs文件中,其中最主要的一個方法是檢查某一角色是否擁有某一確定權限的checkAuth(string roleId,string funcEName)方法。這個方法的思想如圖4所示。

ASP.NET中怎么設計系統用戶權限

圖4中roleValue(角色值)的第0位(selectgoods的功能編號)值為1,表示該角色擁有selectgoods(商品信息查詢)的權限。這樣,我們把對權限檢查的所有邏輯都封裝在了用戶控件中,因此,對WEB窗體頁.aspx文件而言,只需在導入.ascx文件時確定用戶在訪問該頁面時所應擁有的權限,而不需對aspx.cs進行任何改動。

上述內容就是ASP.NET中怎么設計系統用戶權限,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灯塔市| 中西区| 西林县| 乌鲁木齐市| 高淳县| 锡林郭勒盟| 祁门县| 离岛区| 洪江市| 安徽省| 平塘县| 浦城县| 梁平县| 崇文区| 福安市| 永川市| 乌鲁木齐县| 封开县| 洛隆县| 财经| 洮南市| 乌兰察布市| 怀化市| 武威市| 喀什市| 赤峰市| 灵寿县| 宁夏| 太湖县| 江山市| 静海县| 太白县| 陆河县| 苏尼特左旗| 锡林浩特市| 藁城市| 邵东县| 安塞县| 横峰县| 米易县| 安新县|