Как использовать проверку подлинности Windows с ролями в Hot Towel?

Я могу развернуть стандартный интранет-проект asp.net mvc 4 и украсить контроллер или методы такими вещами, как:

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

Я протестировал его, и он будет работать отлично (поскольку моя учетная запись домена является членом «Пользователи MyApp» в Active Directory)

Однако моя проблема/вопрос заключается в том, как добиться того же типа поведения для "Горячее полотенце" " приложение? Я пытаюсь украсить свой контроллер бриза, контроллер HotTowel или любой другой метод с тем же атрибутом, и я никогда не могу аутентифицироваться... что дает?

Ваша помощь очень ценится.


person Mr.Hardy    schedule 26.03.2013    source источник
comment
У вас есть настройка поставщика ролей? Проверьте IPrincipal и убедитесь, что вы также вошли в систему.   -  person Evan Larsen    schedule 26.03.2013
comment
Я использую поставщика ролей по умолчанию для asp.net mvc... ничего нестандартного. И да, если я проверю IPrincipal, он покажет, что я вошел в систему.   -  person Mr.Hardy    schedule 26.03.2013


Ответы (1)


Наконец-то разобрался. Я надеюсь, что это полезно для других.

Сначала вы должны установить WindowsProvider в качестве вашего диспетчера ролей следующим образом:

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

Затем вы сможете проверить роли для пользователя [используя Roles.IsUserInRole()], а точнее, для этого вопроса используйте атрибут авторизации. Единственное, вам нужно будет включить домен в атрибут авторизации, например:

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

И теперь все работает так, как вы ожидаете.

person Mr.Hardy    schedule 17.04.2013