Несанкционированный запрос не перенаправляется на страницу входа в систему с параметром returnUrl Query String

StackOverflow https://stackoverflow.com/questions/4478570

Вопрос

Настраивать

В моем приложении MVC3 MembersController украшен атрибутом [авторизации].

У MembersController есть действие под названием MyPage. В связи с атрибутом авторизации на контроллере MyPage может быть запрошен только авторизованными пользователями.

Проблема

Когда несанкционированный пользователь пытается запросить /члены /mypage, он правильно перенаправляется на страницу входа в систему.

Тем не менее, параметр returnUrl не передается на страницу входа в систему, поэтому, когда пользователь аутентифицирует, он доставляется на страницу по умолчанию (давайте назовут это /члены /дом) вместо /члены /mypage.

Вопрос

Почему?!

В другом приложении, разработанном в MVC2, параметры ReturnUrl QS существуют и работают, как и ожидалось.

Другие вопросы:

Атрибут Autorize игнорируется при украшении как контроллеров, так и действий.

Разрешение:

Разделы Web.Config не обновлены между .NET 3.5 и .NET 4. См. Ответы ниже.

Это было полезно?

Решение

@Marcind поставила меня на правильный путь, ответ @Darin DiMitrov's очень поучителен в отношении процесса.

Диагноз

Похоже, что проблема была связана с web.config, который я не обновлял должным образом при слиянии существующего приложения Web Forms .net 3.5 в приложение .net 4.0. Я не могу вспомнить, как я это пошел.

В любом случае, сравнивая web.config моего приложения с новым mvc 3 web.config, я смог найти дополнительные биты, которых не должно было быть там, оставлено с 3,5 дня.

Разрешение:

Проблема была решена путем исправления битов вu003Cauthentication>u003Cforms> отметьте в web.config, а такжеu003Cmembership> ярлык.

Другие проблемы, вызванные этим:

Еще одна проблема, вызванная этим, заключался в том, что если я украсил контроллер с атрибутом «Авторизировать», он был проигнорирован, поэтому контроллер пытался обработать информацию на основе текущего пользователя, что, очевидно, было нулевым, поэтому всевозможные исключения были запускаются.

Другие советы

Меня устраивает. Я создал новый проект, используя ASP.NET MVC 3 RC2, шаблон по умолчанию, добавил участник, украсил его с помощью [Authorize] атрибут, запустите приложение, запрашивается /members/index, был перенаправлен на /Account/LogOn?ReturnUrl=%2fmembers%2findex, вошел в систему, был перенаправлен на /members/index. Анкет С вашим кодом должно быть что -то еще что -то не так.

Вот как это работает:

  • А [Authorize] Атрибуты проверяют, является ли пользователь аутентифицирован, и если он не возвращает код состояния 401.
  • А FormsAuthenticationModule который является частью ASP.NET и обрабатывает формы аутентификации перехватывает код состояния 401 и перенаправляет на страницу входа, добавляя параметр returnUrl к запросу, который указывает на первоначальный запрос.

А FormsAuthenticationModule Модуль не специфичен для ASP.NET MVC, это стандартный материал ASP.NET

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top