如何使用Hot Towel角色使用Windows身份验证?

Mr.*_*rdy 5 asp.net-mvc-4 breeze hottowel

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

[System.Web.Mvc.Authorize(Roles = "MyApp Users")]
Run Code Online (Sandbox Code Playgroud)

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

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

非常感谢您的帮助.

Mr.*_*rdy 5

终于想通了.我希望这对别人有用.

首先,您必须将WindowsProvider设置为您的roleManager,如下所示:

<roleManager defaultProvider="WindowsProvider"
   enabled="true"
   cacheRolesInCookie="false">
  <providers>
    <add
      name="WindowsProvider"
      type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)

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

[System.Web.Mvc.Authorize(Roles = "YourDomain\\MyApp Users")]
Run Code Online (Sandbox Code Playgroud)

现在一切都按照您的预期运作.