2010-06-25 135 views
0

我想在ASP.NET應用程序中設置授權權限。ASP.NET授權設置

因此,在一個特定的文件夾中,我想拒絕某個特定用戶訪問哪個用戶角色被授予允許該特定用戶角色。

<authorization> 
      <allow roles="General" /> 
      <allow roles="Sale" /> 
      <allow roles="Administrator" /> 
      <deny users="admin_test" /> 
</authorization> 

然而,當我試圖通過使用admin_test帳戶,系統訪問從該特定文件夾的網頁讓我來訪問,而不是拒絕訪問的頁面。

任何人都可以指出上述配置有什麼問題嗎?

任何幫助將不勝感激。

問候,

回答

2

你需要有deny首先列出。授權引擎將stop on the first matching rule

在運行時,通過授權模塊迭代的允許和拒絕元素,從最高的本地配置文件,直到授權模塊發現適合特定用戶帳戶的第一個訪問規則。然後,授權模塊根據所發現的第一訪問規則是允許規則還是拒絕規則來授予或拒絕對URL資源的訪問。包含在應用程序級 配置文件優先 在繼承的規則

規則:

0

根據http://msdn.microsoft.com/en-us/library/wce3kxhd.aspx

規則應用如下。系統 通過構建URL的所有 規則的合併列表來確定哪個規則優先於 ,並且最近的 規則(層次結構中最接近的那些) 位於列表的開頭。

鑑於一個 應用一組規則合併,ASP.NET開始在列表的 頭,直到找到第一個匹配檢查規則 。 ASP.NET 的 默認配置包含授權所有用戶的元素 。 (默認爲 ,最後應用此規則。) 如果沒有其他授權規則匹配,則允許請求 。如果找到匹配項 ,並且匹配項是拒絕元素,則 請求將返回401 HTTP狀態碼。如果允許元素 匹配,則該模塊允許進一步處理請求 。

因此,如果admin_test用戶處於General,Sale,Administrator角色中的任何一個,它將首先匹配並允許訪問。嘗試在允許規則之前放置拒絕規則。