2010-04-29 79 views
8

是否可以在web.config文件的授權元素內指定多個角色?我目前在我的一個網站的web.config此塊爲特定的目錄:在Web.config授權中需要多個角色

<authorization> 
    <allow roles="Global, Region" /> 
    <deny users="*" /> 
</authorization> 

我已經能發現一個特殊情況比全球和區域的兩個低級別權限的人也應該有機會到這個目錄。粗略地說,我想要這樣的事情:

<authorization> 
    <allow roles="GlobalManager, RegionManager, SiteManager && FooSite" /> 
    <deny users="*" /> 
</authorization> 

任何想法?我意識到我應該爲這個場景發揮新的作用,但我想避免這種情況。謝謝!

+0

不幸的是,我不認爲這是可能的。我試圖用來做同樣的事情。 :-( – Pandincus 2011-02-24 15:46:34

回答

3

我不認爲你可以通過web.config中允許的當前配置來做到這一點。什麼,你可以做,雖然是類似如下......在你Page_Load事件的第一行有問題的網頁,使用下面的代碼(VB):

If Not (User.IsInRole("Role1") AndAlso User.IsInRole("Role2")) Then _ 
    FormsAuthentication.RedirectToLoginPage() 

當然,此行是假設你正在使用FormsAuthentication。如果沒有,您需要根據您的驗證方法用相應的代碼替換FormsAuthentication.RedirectToLoginPage()

我不完全知道你的情況,但根據你的代碼,它看起來像你可以更進一步,並添加一個用戶映射到網站的表格,並執行如下操作:

在公共模塊,添加如下代碼:

<System.Runtime.CompilerServices.Extension()> _ 
Public Function ManagesSite(target As System.Security.Principal.IPrincipal, siteName As String) As Boolean 
    Return [ code here to look up whether this user can access the site specified ] 
End Function 

然後,你可以寫前面的代碼的東西更有邏輯性,如:

If Not (User.IsInRole("SiteManager") AndAlso User.ManagesSite(Request.Url.Host)) Then _ 
    FormsAuthentication.RedirectToLoginPage() 
3

的方法我通常用來解決這個問題是在設置用戶角色時,創建虛擬角色。因此,如果您希望只允許學生管理員訪問某個頁面,則用戶既有學生角色又有管理員角色,則可以添加新的學生管理員角色。

+0

我很想知道你會如何實現這一點。 – 2015-09-24 09:02:27