5

我可以启动一个标准的 asp.net mvc 4 Intranet 项目并使用以下内容装饰控制器或方法:

[System.Web.Mvc.Authorize(Roles = "MyApp Users")]

我已经对其进行了测试,它可以完美运行(因为我的域帐户是 Active Directory 中“MyApp 用户”的成员)

但是我的问题/问题是如何为“热毛巾”应用程序获得相同类型的行为?我尝试装饰我的微风控制器、HotTowel 控制器或任何具有相同属性的方法,但我永远无法验证...什么给出了?

非常感谢您的帮助。

4

1 回答 1

5

终于想通了。我希望这对其他人有用。

首先,您必须将 WindowsProvider 设置为您的角色管理器,如下所示:

<roleManager defaultProvider="WindowsProvider"
   enabled="true"
   cacheRolesInCookie="false">
  <providers>
    <add
      name="WindowsProvider"
      type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>

然后,您将能够检查用户的角色 [使用 Roles.IsUserInRole()],更具体地说,对于这个问题,使用 authorize 属性。唯一的事情是您必须在授权属性中包含域,如下所示:

[System.Web.Mvc.Authorize(Roles = "YourDomain\\MyApp Users")]

现在一切都如您所愿。

于 2013-04-17T23:19:44.223 回答