2012-08-12 21 views
0

場景:一個Web應用程序由一個根目錄(open,no authorization)和一些子目錄(讓我們稱它們爲Sub1,Sub2和Sub3)組成。此外,當提供用戶名時,有一種方法是聯繫SP並返回包含子目錄名稱的IEnumerable<String>,該子目錄的名稱應該允許某個用戶訪問。以上內容不可更改。ASP.NET中根據登錄名訪問一組子目錄的授權

我在想什麼中級方式來解決這個問題。我不能依賴AD,並且存儲在cookie或會話變量中的簡單授權不會允許訪問子目錄的多樣化。

我很自信,我可以讓它工作,但我想以可吹風格的樣式來做。

建議?

回答

1

對我來說,它聽起來就像你可以把每個子文件夾的web.config

<authorization> 
    <allow roles="SubfolderName" /> 
    <deny users="*" /> 
</authorization> 

然後,對於每個用戶,將這個附加IEnumerable<string>子文件夾到用戶的角色在你的角色管理員列表的結果。

這樣,每個試圖訪問該文件夾的用戶都將在他/她的角色列表中具有適當的角色,並且URL授權模塊將允許用戶訪問該文件夾。

+0

是否有可能從全局的web.config(例如通過'「'?)做到這一點,我敢肯定我不會被允許放入本地'web。那麼它是否可以通過編程方式(1)將這些行添加到全局'web.config'中或(2)即時創建本地'web.config',可以這麼說嗎? – 2012-08-12 14:51:19

+0

是的,您可以在全局'web.config'中創建所有這些映射,也可以在運行中創建授權規則,您只需編寫自己的http模塊並向'AuthorizeRequest'方法添加自定義邏輯即可。有效,前者似乎更容易,因爲它取決於現有的機制。 – 2012-08-12 17:44:46