Метод formsauthentication.GetRedirectUrl всегда возвращает значение по умолчанию
у меня есть ASP.NET MVC app и я использую формы auth. При переходе на страницу, которая требует аутентификации, то есть есть атрибут [Authorize] в действии контроллера, он перенаправляет пользователя на страницу входа с возвращаемым url-адресом, таким как http://localhost/Login?ReturnUrl=/MyAuthorizedUrl
.
вот как настраивается моя конфигурация:
<authentication mode="Forms">
<forms loginUrl="~/Login" timeout="2880" defaultUrl="~/" />
</authentication>
вот как я получаю url-адрес перенаправления:
var url = FormsAuthentication.GetRedirectUrl( model.Email, model.RememberMe );
это всегда возвращает URL-адрес по умолчанию.
что вызывает это?
2 ответов
Я предполагаю, что вы хотели бы получить "MyAuthorizedUrl" в результате FormsAuthentication.GetRedirectUrl
?
вам нужно вставить скрытое поле ввода, которое отражает ReturnUrl=/MyAuthorizedUrl
, например,name="ReturnUrl" value="/MyAuthorizedUrl"
.
причина в том, что страница входа запрашивается через GET с помощью ReturnUrl
, но почта идет в /Login
(без параметров).
альтернативно измените атрибут действия формы, чтобы включить
Если ваша форма входа:
@using (Html.BeginForm
(
"Login",
"Account",
new { ReturnUrl = Request.QueryString["ReturnUrl"] },
FormMethod.Post
))
замените " Login "на имя действия и" Account " на имя контроллера.