0

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

不工作。有没有更好的办法?建议?

4

1 回答 1

1

事实证明,不需要指定域。如果你使用

[授权(角色=“AppUsers”)]

MVC4 将检查本地域控制器。

于 2013-05-23T13:30:42.153 回答