我目前正在开发一个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