ReturnUrl = Default.aspx для MVC?

Я пытаюсь защитить весь свой сайт MVC, поэтому перед контроллером Home я добавил атрибут [Authorize].

Теперь, если вы запустите его из Visual Studio или перейдете по корневому URL (например, http://localhost:2897/), он, как и ожидалось, перенаправит вас на страницу входа. Однако URL-адрес в адресной строке после перенаправления выглядит следующим образом: http://localhost:2897/Account/LogOn?ReturnUrl=%2Fdefault.aspx%3F

Я не проверял это, поскольку я не реализовал свой код аутентификации. Тем не менее, это выглядит для меня большой проблемой, поскольку у меня нет проекта default.aspx!

Мой тег аутентификации в web.config выглядит так:

<authentication mode="Forms">
   <forms loginUrl="~/Account/LogOn" defaultUrl="~/Home/Index" timeout="2880"/>
</authentication>

Почему он не выбирает этот маршрут как ReturnUrl по умолчанию вместо default.aspx?

1 ответ

ASP.NET (если быть точным, FormsAuthentication.RedirectFromLoginPage) всегда игнорирует defaultUrl установка в web.config когда ReturnUrl параметр присутствует. Это только приветствуется, когда вы идете прямо на страницу входа без прохождения каких-либо ReturnUrl параметры.

Шаблон проекта ASP.NET MVC предоставляет пустое Default.aspx шаблон для обработки подобных запросов в режиме конвейера IIS Classic. Вы должны быть в порядке с этим.

Другие вопросы по тегам