2010-03-21 26 views
0

是否有可能在運行時配置ASP.NET MVC中的安全性?例如,如果我的控制器已被標記爲在運行時配置ASP.NET MVC中的安全性

[Authorize(Roles="Admin")] 

有沒有方法可以在運行時添加/刪除角色?或者,你是否需要在代碼中進行更改並重新編譯?

回答

0

如果你想建立一些自定義的東西,你可以創建你自己的定製授權方案。

看看AuthorizeAttribute - 這裏是an article,它有兩個機制的簡單比較。

1

是的,你將不得不提供你自己的IPrincipal實現,這將允許。所有的Authorize方法都是調用User.IsInRole(「Admin」)方法。

1

我想你需要這種功能,因爲你在運行時添加新的角色,並且你正嘗試將它們連接到你的應用程序提供的功能上。如果我的思想正確無誤,則還必須具有存儲在某處(在數據庫或註冊表或配置文件中)的功能列表。鑑於此,我相信你將用戶置於角色中,並將角色附加到功能上,並將這些關係存儲在數據存儲中。

所以,有了這一切,你可能要拿出對自己的行爲自定義屬性(裝飾),將說出頭像

[AuthorizeUsers] 

,而不是

[Authorize(Roles="Admin")] 

所以發射任何參考到任何類型的角色,而是進入數據存儲並枚舉所有的關係,並檢查所有的角色/用戶及其,我應該說,權限。然後,您要麼拒絕他們的請求(例如,將他們返回到他們有權訪問的另一個View),要麼給他們一個選擇權限的選項(當您訪問您沒有權限的部分頁面時,SharePoint會執行此操作)。

有關如何編寫自定義授權的確切代碼示例,請轉到ASP.NET MVC源代碼 - System.Web.Mvc命名空間。

HTH