FormsAuthentication.GetRedirectUrl всегда возвращает значение по умолчанию - PullRequest
6 голосов
/ 22 ноября 2010

У меня есть приложение ASP.NET MVC, и я использую Forms auth.При переходе на страницу, требующую аутентификации, то есть атрибута [Authorize] в действии контроллера, он перенаправляет пользователя на страницу входа с URL-адресом возврата, таким как http://localhost/Login?ReturnUrl=/MyAuthorizedUrl.

.is setup:

<authentication mode="Forms">
  <forms loginUrl="~/Login" timeout="2880" defaultUrl="~/" />
</authentication>

Вот как я получаю URL перенаправления:

var url = FormsAuthentication.GetRedirectUrl( model.Email, model.RememberMe );

Это всегда возвращает URL по умолчанию.

Что вызывает это?

Ответы [ 2 ]

7 голосов
/ 22 ноября 2010

Полагаю, вы хотите получить "MyAuthorizedUrl" в результате FormsAuthentication.GetRedirectUrl?

Вам нужно будет вставить скрытое поле ввода, которое отражает ReturnUrl=/MyAuthorizedUrl, например, name="ReturnUrl" value="/MyAuthorizedUrl".

Причина в том, что страница входа запрашивается через GET с ReturnUrl, но POST переходит к /Login (без каких-либо параметров).

Или измените атрибут действия формы, включив в него параметр ReturnUrl.

5 голосов
/ 01 августа 2012

Если ваша форма входа:

@using (Html.BeginForm
(
     "Login", 
     "Account", 
     new { ReturnUrl = Request.QueryString["ReturnUrl"] },
     FormMethod.Post
))

Замените «Логин» на имя вашего действия и «Учетная запись» на имя вашего контроллера.

...