我目前正在开发一个MVC内部网web应用程序。将在多个域中部署相同的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")]
不起作用。有没有更好的方法?有什么建议吗?
发布于 2013-05-23 21:30:42
事实证明,不需要指定域。如果您使用
授权(Roles= "AppUsers")
MVC4将对照本地域控制器进行检查。
https://stackoverflow.com/questions/16491264
复制相似问题