Asp.net中Web.config 頁面訪問按角色授權配置

來源:互聯網
上載者:User

 

  有個User目錄,裡面有一組.aspx檔案,除了A.aspx,跟B.aspx只允許VIP使用者訪問外,其他只要普通的使用者就可以訪問

  那麼User 目錄下的web.config檔案配置如下

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.web>
  <authorization>
   <deny users="?" />
  </authorization>
 </system.web>
 <location path="A.aspx">
  <system.web>
   <authorization>
    <allow roles="VIP,System"/>
    <deny users="*"/>
   </authorization>
  </system.web>
 </location>
 <location path="B.aspx">
  <system.web>
   <authorization>
    <allow roles="VIP,System"/>
    <deny users="*"/>
   </authorization>
  </system.web>
 </location>
</configuration>

注意 allow 元素應該寫在 deny元素之前

deny user="?" 中 "?" 表示拒絕匿名使用者

而deny user="*" 表示拒絕全部使用者

 

比較

<location path="a.aspx">

  <system.web>
   <authorization>

    <allow roles="VIP,System"/>
    <deny roles="System"/>
   </authorization>
  </system.web>

</location>

<location path="a.aspx">

  <system.web>
   <authorization>
    <deny roles="System"/>
    <allow roles="VIP,System"/>
   </authorization>
  </system.web>

</location>

當以System角色登入時,前一個配置會允許訪問a.aspx而後一個則拒絕,具體針對某一個角色時,當同時出現拒絕跟允許,一般按拒絕在先,還是允許在先來決定,是否接受 

最後,<allow roles="xxx,yyy"/>

      <deny  users="*" />

一般配合使用以達到對角存取控制的目的(deny 放後面)

-----------------------------------

下面內容摘自<<Asp.net2.0揭密>>

 

2.2  配置安全授權

授權是指識別使用者是否可以訪問特定資源的過程。可以通過向Web設定檔添加authorization節點來控制授權。

不管應用程式啟用任何類型的鑒別類型,都會使用相同的方法進行授權。換句話說,即使是在使用Forms、Windows和.NET Passport鑒別時,也都使用相同的方法來為其進行授權。

一般來說,我們會將所有要求輸入密碼保護的頁面放在單獨的檔案夾中。如果向該檔案夾中添加一個Web設定檔,那麼該Web設定檔的設定將會應用到該檔案夾以及其子檔案夾中的所有頁面上。

例如,如果將代碼清單2-10中的Web設定檔添加到該檔案夾中,那麼任何未獲得授權的使用者訪問該檔案夾中的任何頁面,都會被拒絕。

代碼清單2-10  Web.Config

<?xml version="1.0"?>

<configuration>

    <system.web>

      <authorization>

        <deny users="?"/>

      </authorization>

     

    </system.web>

</configuration>

如果將代碼清單2-10中的檔案添加到該檔案夾中,那麼未授權的使用者將不能訪問該檔案夾下的任何頁面。當啟用了Forms鑒別後,未授權使用者的訪問將會自動地重新導向到Login頁面。

代碼清單2-11中的Web設定檔包含了一個authorization節點,同時該節點定義了一個簡單的授權規則。匿名使用者不能訪問設定檔。符號?表示匿名(未鑒別)使用者。

下面兩個特殊的符號可以用於users屬性:

q ?——用於表示未鑒別使用者;

q *——用於表示所有使用者(未鑒別和已鑒別)。

屬性deny可以設定為指定的使用者名稱或者以逗號為分割符的使用者名稱列表。例如,代碼清單2-11中的authorization節點允許名為Jane的使用者訪問,同時禁止其他任何人訪問(甚至是已鑒別使用者)。

代碼清單2-11  SecretFile\Web.Config

<?xml version="1.0"?>

<configuration>

  <system.web>

    <authorization>

      <allow users="Jane" />

      <deny users="*" />

    </authorization>

  </system.web>

</configuration>

授權規則的設定順序非常重要。ASP.NET Framework使用短路匹配演算法。如果交換代碼清單2-11中allow和deny屬性規則的定義次序,那麼沒有任何人,Jane也不例外,可以允許訪問該設定檔所在檔案夾下的頁面。

註解   要防止匿名使用者存取應用程式中的任何頁面,可以通過向該應用程式根目錄的Web配置中添加authorization節點。不過在這樣的情況下,是需要允許匿名使用者存取Login頁面的(否則在使用Forms鑒別時,將沒有任何使用者可以登入該應用程度)。

Developer

註解

 

Visual Web 如果你喜歡,還可以通過網站管理工具來配置授權規則。使用該工具可以在表單介面下對不同的檔案夾進行授權配置。通過開啟該網站組態工具,需要通過選取菜單選項WebSite(網站)→ASP.NET Configuration(ASP.NET配置)。

2.2.1  角色授權

在建立鑒別規則時,還可以通過使用者角色進行鑒別。例如,代碼清單2-12中的Web設定檔將防止除Administrator 群組外的任何使用者訪問其檔案夾下的任何頁面。

代碼清單2-12  Web.Config

<?xml version="1.0"?>

<configuration>

  <system.web>

    <authorization>

      <allow roles="Administrator"/>

      <deny users="*"/>

    </authorization>

  </system.web>

</configuration>

當應用程式啟用了Forms鑒別後,role屬性所表示的是自訂角色。在2.4節中,將介紹如何配置和建立自定的角色。如果應用程式啟用了Windows鑒別,那麼role屬性所表示的是微軟Windows組。

2.2.2  根據位置授權訪問檔案

在預設情況下,授權規則會應用到該檔案夾以及其子檔案夾中的所有頁面上。然而,也可以在authorization節點中使用location節點選項。使用location節點可以將授權規則應用到檔案夾或特定路徑的頁面上。

例如,假設你只需要使用密碼來保護一個,僅僅只是一個檔案夾中的頁面。在那樣的情況下,就可以使用location節點來指定單個檔案的路徑。代碼清單2-13中的Web設定檔使用密碼來保護了一個名為Secret.aspx的頁面。

代碼清單2-13  Web.Config

<?xml version="1.0"?>

<configuration>

  <system.web>

    <authentication mode="Forms" />

  </system.web>

  <location path="Secret.aspx">

    <system.web>

      <authorization>

        <deny users="?"/>

      </authorization>

    </system.web>

  </location>

</configuration>

location節點也可以將配置資訊應用到特定的子檔案夾中。例如,代碼清單2-14中的Web設定檔通過密碼來保護了名為SecretFiles的檔案夾。

代碼清單2-14  Web.Config

<?xml version="1.0"?>

<configuration>

  <system.web>

    <authentication mode="Forms" />

  </system.web>

  <location path="SecretFiles">

    <system.web>

      <authorization>

        <deny users="?"/>

      </authorization>

    </system.web>

  </location>

</configuration>

2.2.3  對圖片以及其他檔案類型進行訪問授權

我們之前所討論的授權規則只能應用到已關聯到ASP.NET Framework中的檔案類型上。Visual Web Developer Web伺服器端將所有的檔案類型關聯到了ASP.NET Framework中。另一方面,IIS只將特定的檔案類型關聯到了ASP.NET Framework中。

如果應用程式使用IIS,並且將一圖片檔案添加到該應用程式受密碼報複的檔案夾中,這時使用者對該圖片檔案的訪問請求並不會被阻止。在預設情況下,鑒別規則只被應用到了諸如ASP.NET頁面這樣的檔案類型上。而對於圖片、微軟Word文檔和傳統的ASP頁面等檔案類型都被ASP.NET Framework忽略了。

如果你需要使用密碼來保護特定類型的靜態檔案,例片或微軟Word文檔等,那麼需要將這些類型檔案的副檔名關聯到ASP.NET ISAPI擴充中。

例如,遵照下列這些步驟將啟用對.gif類型圖片檔案的授權管理:

(1) 通過點擊Start(開始)→Control Panel(控制台)→Administrator Tools(管理工具)→IIS(Internet資訊服務),開啟IIS管理器。

(2) 開啟特定Web網站或虛擬目錄的屬性設定視窗。

(3) 通過選取Directory(目錄)選項卡並點擊Configuration(配置)按鈕,開啟Application Configuration(應用程式配置)對話方塊。

圖2-3 IIS中的映射選項卡(Windows XP作業系統)

" hspace="12" src="http://book.csdn.net/BookFiles/488/img/image023.gif" width="218" align="left">(4) 選取並點擊Mapping(映射)選項卡(見圖2-3)。

(5) 點擊Add(添加)按鈕以開啟添加/編輯(Add/Edit)應用程式副檔名映射對話方塊。

(6) 在Executable(可執行)表單項中,輸入ASP.NET ISAPI動態連結程式庫的路徑(也可以通過編輯.aspx副檔名映射,來複製並粘貼該路徑)。

(7) 在Extension(副檔名)表單項中填入.gif。

當完成了以上步驟後,對.gif圖片檔案的請求將會傳給ASP.NET Framework。同時也就可以對.gif類型檔案進行統一的鑒別和授權。

遵照以上步驟及操作順序,可以對其他類型靜態檔案設定密碼保護功能,例如微軟Word文檔、Excel試算表和視頻檔案等。

2.2.4  對傳統ASP頁面進行訪問授權

雖然在同一個應用程式中可以混合使用ASP.NET頁面和傳統ASP頁面。然而,普通的ASP.NET頁面和傳統的ASP頁面運行在彼此獨立的程式域中。特別需要注意的是,ASP.NET的鑒別和授權都不能應用到傳統的ASP頁面上。

如果你使用IIS6(該版本IIS位於Windows Server 2003中),那麼可以將傳統ASP頁面映射到ASP.NET Framework中。在那樣的設定下,ASP.NET授權規則將應用到傳統ASP頁面上。

IIS6支援一個名為萬用字元應用程式對應(wildcard application mapping)的功能。所以可以通過萬用字元來截獲對傳統ASP頁面的請求,並將該請求交由ASP.NET Framework進行處理。通過鑒別和授權檢驗後,ASP.NET Framework再將該請求轉寄給傳統ASP模組進行處理。

圖2-4 在IIS中啟用萬用字元映射(Windows Server 2003作業系統)

" hspace="12" src="http://book.csdn.net/BookFiles/488/img/image024.gif" width="232" align="left">要啟用ASP.NET的萬用字元映射,需要執行以下步驟:

(1) 點擊Start(開始)→Control Panel(控制台)→Administrator Tools(管理工具)→IIS(Internet資訊服務),開啟IIS管理器。

(2) 開啟指定目錄或虛擬目錄的屬性視窗。

(3) 選中Directory(目錄)選項卡並點擊Configuration(配置)按鈕,以開啟應用程式配置對話方塊。

(4) 選中Mapping(映射)選項卡。

(5) 點擊映射選項卡底部的Insert(插入)按鈕,以開啟Add/Edit(添加/刪除)應用程式副檔名映射對話方塊(見圖2-4)。

(6) 在副檔名輸入框中輸入ASP.NET ISAPI動態連結程式庫的路徑(該路徑也可以從.aspx副檔名的映射設定上進行複製,並粘貼到該輸入框中)。

在完成了以上步驟之後,那麼對所有檔案(不僅僅是傳統ASP檔案)的訪問請求,都會映射到ASP.NET Framework上。這樣一來,就可以使用與保護ASP.NET頁面的相同方法來通過ASP.NET授權規則保護傳統ASP頁面。該應用中的授權規則同時也對諸像檔案、微軟Word文檔和其他類型檔案生效。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.