我目前正在开发一个MVC内联网网络应用程序。将在多个域中部署相同的Web应用程序。我正在使用Windows授权和授权应用程序的本地域中的组。我正在使用[authorize]属性来装饰我的控制器操作以保护某些操作。
[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属性...
[Authorize(Roles = "" + AppDomainSecurityContext + "\AppUsers")]
不起作用。有没有更好的办法?建议?
答案 0 :(得分:1)
原来有不需要来指定域名。如果你使用
[授权(Roles =“AppUsers”)]
MVC4将检查本地域控制器。