我目前正在开发一个 MVC Intranet 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(Roles = "" + AppDomainSecurityContext + "\AppUsers")]
不工作。有没有更好的办法?建议?