Несанкционированный запрос не перенаправляется на страницу входа в систему с параметром returnUrl Query String
-
11-10-2019 - |
Вопрос
Настраивать
В моем приложении 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