成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET系統(tǒng)用戶權(quán)限設(shè)計(jì)與實(shí)現(xiàn)

開發(fā) 后端
本文依據(jù)RBAC的基本思想,利用ASP.NET中的用戶控件技術(shù),設(shè)計(jì)了在電子商務(wù)系統(tǒng)中ASP.NET系統(tǒng)用戶權(quán)限控制的一種具體實(shí)現(xiàn)方法。

引言

電子商務(wù)系統(tǒng)對安全問題有較高的要求,傳統(tǒng)的訪問控制方法DAC(Discretionary Access Control,自主訪問控制模型)、MAC(Mandatory Access Control,強(qiáng)制訪問控制模型)難以滿足復(fù)雜的企業(yè)環(huán)境需求。因此,NIST(National Institute of Standards and Technology,美國國家標(biāo)準(zhǔn)化和技術(shù)委員會(huì))于90年代初提出了基于角色的訪問控制方法,實(shí)現(xiàn)了用戶與訪問權(quán)限的邏輯分離,更符合企業(yè)的用戶、組織、數(shù)據(jù)和應(yīng)用特征。ASP.NET是微軟為了抗衡JSP而推出的新一代ASP(Active Server Pages)腳本語言,它借鑒了JSP的優(yōu)點(diǎn),同時(shí)它又具有自身的一些新特點(diǎn)。

本文將首先介紹ASP.NET系統(tǒng)用戶權(quán)限的基本思想,在此基礎(chǔ)上,給出電子商務(wù)系統(tǒng)中實(shí)現(xiàn)用戶權(quán)限控制的一種具體方法。

ASP.NET概述

1、ASP.NET

ASP.NET是微軟流行的動(dòng)態(tài)WEB編程技術(shù)活動(dòng)服務(wù)器網(wǎng)頁(ASP)的***版本,但它遠(yuǎn)不是傳統(tǒng)ASP簡單升級。ASP.NET和ASP的***區(qū)別在于編程思維的轉(zhuǎn)換,ASP.NET是真正的面向?qū)ο螅∣bject-oriented),而不僅僅在于功能的增強(qiáng)。

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

2、用戶控件(UserControl)

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

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

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

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

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

  1. 〈Acme: Head runat="server"/ 〉  

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

RBAC的基本思想

RBAC(角色訪問控制)的基本思想可簡單地用圖1來表示,即把整個(gè)ASP.NET系統(tǒng)用戶權(quán)限訪問控制過程分成兩步:訪問權(quán)限與角色相關(guān)聯(lián),角色再與用戶關(guān)聯(lián),從而實(shí)現(xiàn)了用戶與訪問權(quán)限的邏輯分離。

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

#p#

ASP.NET系統(tǒng)用戶權(quán)限在.NET中的設(shè)計(jì)與實(shí)現(xiàn)

利用.NET中的用戶控件實(shí)現(xiàn)權(quán)限控制的基本思想是:根據(jù)角色訪問控制(RBAC)的基本原理,給用戶分配一個(gè)角色,每個(gè)角色對應(yīng)一些權(quán)限,然后利用ASP.NET中的用戶控件(UserControl)來判斷該用戶對應(yīng)的角色是否對訪問頁面有訪問的權(quán)力。

下面將從數(shù)據(jù)庫設(shè)計(jì)、添加角色和用戶控件的使用等三方面來闡述具體ASP.NET系統(tǒng)用戶權(quán)限實(shí)現(xiàn)過程。

1、數(shù)據(jù)庫中表的設(shè)計(jì)

首先,在數(shù)據(jù)庫中設(shè)計(jì)功能模塊表、功能表和角色表等三個(gè)表。

(1) 功能模塊表

為了管理好用戶的權(quán)限,首先要組織好系統(tǒng)的模塊,為此設(shè)計(jì)了一個(gè)功能模塊表。見表1。

ASP.NET用戶權(quán)限設(shè)計(jì)

(2) 功能表

ASP.NET用戶權(quán)限設(shè)計(jì)

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

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

ASP.NET用戶權(quán)限設(shè)計(jì)

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,'商品定價(jià)信息查詢','selectgoodsprice',0);

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

(3) 角色表

ASP.NET用戶權(quán)限設(shè)計(jì)

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

ASP.NET用戶權(quán)限設(shè)計(jì)

2、角色的添加

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

ASP.NET用戶權(quán)限設(shè)計(jì)

在將新角色普通會(huì)員插入數(shù)據(jù)庫時(shí),先將角色值的所有位都置為0,然后利用.NET Framework 類庫中的Replace函數(shù)將角色值中的打上勾的功能相應(yīng)的功能編號(hào)位的值改為1。

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

3、利用用戶控件實(shí)現(xiàn)訪問權(quán)限

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

(1) 注冊

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

(2) 聲明

經(jīng)過實(shí)踐,在.aspx文件中聲明.ascx文件可分為幾種情況:

  1. ***種情況:〈 Acme:Head runat="server" / 〉  
  2.  
  3. 第二種情況:〈 Acme:Head runat="server"   
  4. flag=0 funcname1=selectgoods funcname2=updategoods / 〉  
  5.  
  6. 第三種情況:〈 Acme: Head runat="server" flag=1   
  7. funcname1= selectgoods funcname2=updategoods / 〉 

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

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

ASP.NET用戶權(quán)限設(shè)計(jì)

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

由上所述,可以很清楚地看出,只要在用戶控件中對用戶權(quán)限進(jìn)行控制,再把它包括在.aspx文件中(這件事作者本來就是要做的),那么在編程的時(shí)候就不必考慮復(fù)雜的權(quán)限問題了。

結(jié)束語

本文在開發(fā)一個(gè)電子商務(wù)系統(tǒng)的實(shí)踐中發(fā)現(xiàn),公司對ASP.NET系統(tǒng)用戶權(quán)限非常重視。因此,設(shè)計(jì)一個(gè)簡單方便又行之有效的權(quán)限控制機(jī)制對于電子商務(wù)系統(tǒng)是必不可少的。本文所提出的基于ASP.NET的電子商務(wù)系統(tǒng)用戶權(quán)限設(shè)計(jì)和實(shí)現(xiàn)方法已經(jīng)在實(shí)際的工作中得到了驗(yàn)證,修改指定權(quán)限組的操作變得非常方便。

【編輯推薦】

  1. ASP.NET 2.0 Themes特性應(yīng)用淺析
  2. ASP.NET 2.0特性概述
  3. ASP.NET用Post方式向網(wǎng)頁發(fā)送數(shù)據(jù)
  4. ASP.NET 2.0部署WEB應(yīng)用程序淺析
  5. ASP.NET中的HttpWorkerRequest對像
  6. 介紹ASP.NET MVC框架
責(zé)任編輯:冰荷 來源: yesky
相關(guān)推薦

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計(jì)

2009-07-27 14:24:16

ASP.NET訪問權(quán)限

2009-08-05 16:59:55

ASP.NET組件設(shè)計(jì)

2009-07-27 11:09:09

ASP.NET招聘系統(tǒng)

2009-07-28 17:15:17

ASP.NET權(quán)限管理

2009-12-18 16:51:41

ASP.NET概述

2009-08-05 16:53:14

ASP.NET組件設(shè)計(jì)

2009-08-10 10:19:47

ASP.NET組件設(shè)計(jì)

2009-08-04 14:18:49

ASP.NET郵件列表

2009-07-28 13:06:19

ASP.NET電子商務(wù)

2009-08-27 16:59:20

ASP.NET用戶控件

2009-08-04 13:38:36

ASP.NET用戶控件

2009-12-02 09:07:45

ASP.NET 4.0

2011-07-04 15:41:14

AjaxASP.NET

2009-08-10 14:08:15

ASP.NET服務(wù)器控ASP.NET組件設(shè)計(jì)

2009-07-29 17:29:46

ASP與ASP.NET

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-12-07 09:23:05

ASP.NET MVC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩在线视频免费观看 | 狠狠狠色丁香婷婷综合久久五月 | 成人在线一级片 | 一区二区精品在线 | 高清国产午夜精品久久久久久 | 欧美精品二区三区 | 97精品超碰一区二区三区 | 激情三区 | 欧美久久久久久久久 | 亚洲入口| 免费观看羞羞视频网站 | 日韩精品在线免费观看视频 | 日本在线播放一区二区 | 一级二级三级在线观看 | 欧美高清免费 | 成人免费视频一区二区 | 国产精品成人一区 | 成在线人视频免费视频 | 黄色在线免费观看 | 国产精品久久久久久久一区二区 | 亚洲一区导航 | 一区二区三区中文字幕 | 中文字幕av一区 | 亚洲成av| 精品成人免费一区二区在线播放 | 国产亚洲精品精品国产亚洲综合 | 国产高清精品一区二区三区 | 一区二区免费 | 天堂中文字幕av | 久久高清免费视频 | 一区二区三区成人 | 玖玖色在线视频 | 国产精品久久免费观看 | 亚洲国产免费 | 成人精品在线观看 | 欧美中文在线 | 精品国产乱码久久久久久丨区2区 | 欧美影院| 欧美日韩在线观看一区 | 久久久九九九九 | 欧州一区 |