我目前正在開發一個MVC Intranet網絡應用程序。同一個網絡應用程序將部署在多個域中。我正在使用Windows授權和授權應用程序的本地域中的組。我使用[authorize]屬性裝飾我的控制器動作以保護某些動作。動態MVC [授權]多個域
[Authorize(Roles = @"Domain1\AppUsers")]
public ActionResult Index()
{
return View();
}
因爲這個應用很快就會部署到Domain2,這意味着我將不得不重新整理所有授權的控制器操作。我寧願不必爲每個域部署不同的代碼。有沒有辦法讓我的授權屬性「域感知?」
一隻想到我曾經考慮過在web.config中
<appSettings>
<add key="AppDomainSecurityContext" value="Domain1"/>
</appSettings>
設置域名,然後回顧它在控制器和存儲作爲一個字符串
string AppDomainSecurityContext = System.Web.Configuration.WebConfigurationManager.AppSettings["AppDomainSecurityContext"].ToString();
但隨後如何將該變量放入授權屬性中...
[Authorize(Roles = "" + AppDomainSecurityContext + "\AppUsers")]
不起作用。有沒有更好的辦法?建議?
看起來像MVC屬性[需要常量表達式](http://lostechies.com/jimmybogard/2008/12/12/more-c-attribute-annoyances/)。所以我不能使用變量。編寫我自己的[自定義授權屬性](http://www.diaryofaninja.com/blog/2011/07/24/writing-your-own-custom-aspnet-mvc-authorize-attributes)似乎是唯一的選擇。 – 2013-05-11 17:32:49