Я пытаюсь защитить весь мой сайт MVC, поэтому перед домашним контроллером я добавил атрибут [Авторизовать].ReturnUrl = Default.aspx для MVC?
Теперь, если вы запустите его из 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?
Хм .. думаю, я не задаю свой вопрос правильно. Я предполагаю, что мой реальный вопрос: как я могу заставить его установить ReturnUrl как Home/Index вместо default.aspx? То есть, когда человек переходит к корневому URL, а не к определенному маршруту. (Если человек перемещается по определенному маршруту, ReturnUrl верен.) – Cynthia
@Cynthia: Я вижу вашу точку. На самом деле проблема заключается в том, что веб-сервер пытается использовать документ по умолчанию при запросе «/». Шаблон по умолчанию, поставляемый с ASP.NET MVC * прозрачно *, переписывает запросы на «default.aspx» на «/» маршрут * на сервере * и пытается выполнить действие, но поскольку он требует аутентификации, он перенаправляет пользователя на страницу входа, используя текущий URL-адрес в качестве URL-адреса возврата (который по-прежнему является 'default.aspx'). Фактически вы получаете то, что хотите (кроме получения 'default.aspx', отображаемого в адресной строке). У вас будет меньше проблем в интегрированном режиме. –
ОК, я попробовал, и Default.aspx действительно переходит к контроллеру/действию по умолчанию. Так что .. неважно! Я думал, что это будет бомбить, но, видимо, нет. Благодаря! – Cynthia