Owin с MVC 5 - Цикл перенаправления - Как отлаживать?

У меня было приложение MVC 4, и я преобразовал его в MVC 5 в надежде использовать промежуточное ПО OWIN.

Я успешно обновился до MVC 5 и реализовал OWIN в этой статье http://www.khalidabuhakmeh.com/asp-net-mvc-5-authentication-breakdown-part-deux.

Когда я захожу на домашнюю страницу приложения, меня перенаправляют на указанный URL-адрес для входа, однако затем он снова начинает перенаправлять на URL-адрес для входа, пока браузер не завершит попытку с ошибкой цикла перенаправления.

Похоже, что мой контроллер входа в систему считается нуждающимся в аутентификации, даже если атрибут авторизации не установлен. Я попытался добавить атрибут AllowAnonymous, но без изменений.

Я понятия не имею, как отлаживать то, что делает OWIN, я установил несколько точек останова в приложении, и кажется, что мой код никогда не используется в любой момент, поэтому перенаправления должны происходить на уровне промежуточного программного обеспечения.

Вот моя конфигурация OWIN в классе запуска:

app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                   LoginPath = new PathString("/login"),
                   LogoutPath = new PathString("/sign-out"),
                   SlidingExpiration = true,
                   ExpireTimeSpan = new TimeSpan(0,30,0),
                   AuthenticationMode = AuthenticationMode.Active
            });

Когда я выбираю пассивный режим, я просто получаю страницу с несанкционированной ошибкой, никаких перенаправлений не происходит.

Любая идея, как действовать в моем сценарии? Есть ли способ отладить то, что происходит?

Спасибо за вашу помощь,

Вилем


person Vilém Procházka    schedule 27.01.2014    source источник
comment
Здесь та же проблема. Надеюсь, кто-нибудь найдет это, избранное.   -  person Crank    schedule 30.01.2014
comment
@Crank Пожалуйста, посмотрите мой ответ для своего рода решения. И привет, товарищ чешский разработчик. :) Vypadá to že řešíme podobné problémy, nechceš se spojit? Kdyžtak jsem на LinkedIn.   -  person Vilém Procházka    schedule 30.01.2014
comment
Platí sále nabídka? Já jen, že jsem si všiml až dnes, po dvou letech :-D   -  person Crank    schedule 29.02.2016


Ответы (3)


Я тоже следил за статьей, которую вы упомянули, но оказался в цикле перенаправления, несмотря на то, что мой код соответствует коду статьи.

Я исправил перенаправление после подсказки здесь http://forums.asp.net/t/1960987.aspx?After+converting+MVC+4+project+to+MVC+5+I+am+getting+ошибка+этот+веб-сайт+имеет+перенаправление+петля+, который сообщил, что IIS Express хранит настройки аутентификации для конкретного сайта в локальном файле конфигурации.

Если вы играете с другими настройками аутентификации, IIS Express сохранил дополнительные настройки аутентификации в своем файле конфигурации. Что-то вроде:

<location path="WebApplication1">
    <system.webServer>
        <security>
            <authentication>
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="false" />
            </authentication>
        </security>
    </system.webServer>
</location>

Конфигурации находятся в папке «Документы» пользователя

Документы\IISExpress\config\

и вы должны искать

приложениеhost.config

Затем просто удалите xml-узел "местоположение"

Adam

person Adam    schedule 14.04.2014

Я сошел с ума на 1 день, и в конце концов я создал новый проект и сообщил о просмотре за раз, затем о контроллере за раз, пока не произошла ошибка.

Я обнаружил, что на странице макета было какое-то действие, требующее аутентификации, и это вызывало перенаправление.

    For example:
<a href="@Html.Action("Create","ads")" class="btn btn-primary navbar-btn btn-sm">

Я изменился на:

<a href="/Create/ads" class="btn btn-primary navbar-btn btn-sm">
person Marco Casiraghi    schedule 04.05.2014
comment
БОЛЬШОЕ СПАСИБО! Это сэкономило мне то, что, скорее всего, заняло бы часы отладки! - person ChandlerPelhams; 14.05.2015

РЕДАКТИРОВАТЬ: После более позднего расследования проблема была вызвана плагином «SecuritySwitch». Мне пришлось полностью удалить его, похоже, он просто не работает с MVC5 + Owin.

ОРИГИНАЛ: я решил это, установив пробную версию Visual Studio 2013 (обычно я использую 2012) и создав новый проект MVC5 с набором шаблонов аутентификации отдельных учетных записей пользователей.

Затем я начал по частям переносить свой код из проблемного проекта в этот, надеясь найти точку разрыва. Я не нашел ни одного, мой код работал так, как я хотел, когда я полностью перенес его.

Очевидно, что это не настоящее решение, но оно выполнило свою работу. Простое создание проекта с нуля сэкономило часы/дни головной боли.

person Vilém Procházka    schedule 30.01.2014