Войдите в систему с помощью ReturnUrl, указывающего на действие POST: FAIL! - PullRequest
2 голосов
/ 10 октября 2009

У меня есть проект Asp.Net MVC с типичной аутентификацией форм, которая перенаправляет пользователя на страницу после успешного входа в систему. Если в строке запроса есть ReturnUrl, он перенаправит пользователя на ReturnUrl.

Проблема возникает, когда зарегистрированный пользователь сидит на странице достаточно долго, чтобы время входа в систему истекло, и затем отправляет форму, вызывающую публикацию на сервере. Поскольку пользователь больше не проходит аутентификацию, он будет вынужден снова войти в систему. Однако ReturnUrl будет указывать на действие, которое принимает только метод POST и выдает исключение после перенаправления.

Есть ли способ обойти это?

1 Ответ

1 голос
/ 10 октября 2009

Вы должны создать идентичное действие GET и перенаправить его обратно в форму, которую они заполняли. Проблема в том, что редирект на ReturnUrl выполняет GET, а не POST, поэтому возникает ошибка.

Пример:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult SomeFormAction()
{ 
    //redirect them back to the original form GET here 
    RedirectToAction(stuffhere);
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SomeFormAction(FormCollection collection)
{ 
    //this is your original POST 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...