2013-11-25 3 views
2

Я перенесла веб-приложение, которое работает в облачном сервисе Windows Azure из системы членства по умолчанию из шаблона MVC 4, на новый поставщик удостоверений ASP.NET на основе OWIN.Авторизовать атрибут не работает на Azure с OWIN

Приложение в значительной степени зависит от ролей, которые по какой-то причине перестали работать на Azure с момента обновления.

Мои контроллеры или действия украшены [Authorize]. Это работает отлично, за исключением случаев, когда я указываю роль [Authorize(Roles = "User.Test")] и запускаю ее в эмуляторе вычисления Azure. Теперь я получу бесконечные переадресации на страницу входа и обратно (я вхожу в систему, но по какой-то причине он не принимает эту роль). Интересно, если я отлаживаю/запускаю веб-проект напрямую (так что не используя эмулятор Azure), все работает отлично.

Любые идеи о том, как заставить это работать на Azure, а? У меня еще не было такого поведения с чем-то еще, так что это отчасти оставило меня бессловесным.

Update 26 ноября 2013

я обнаружил подобное поведение с шаблоном MVC 5 по умолчанию в VS2013. Пожалуйста, см. Этот forum thread on ASP.NET для шагов, как воспроизвести эту проблему без Azure.

+0

Вы проверили, что база данных, которая используется в Azure имеет правильные строки в AspNetUserRoles и AspNetRoles, связанные с пользователями в таблице AspNetUsers? –

+0

Авторизовать атрибут и User.IsInRole чувствительны к регистру при сравнении. – jd4u

+0

@ OlavNybø, да, это все правильно. – Knelis

ответ

0

Хорошо, по какой-то причине я вызвал весь этот беспорядок, используя предварительные версии библиотек Owin и Identity от MyGet.

Извлечение всех пакетов и установка стабильных сборок устраняют все мои проблемы.

0

Это один сделал трюк для меня:

<system.webServer> 
    <modules> 
     <remove name="RoleManager" /> <!-- <<<<< --> 
Смежные вопросы