ASP.NET MVC HttpPost и SignOn () путаница - PullRequest
0 голосов
/ 02 августа 2011

Как я понимаю, атрибут [HttpPost] или любой метод POST в этом отношении используется при изменении состояния. Однако, если вы устанавливаете Аутентификацию по формам с помощью loginUrl, например:

<forms loginUrl="~/Account/LogIn" ...

это вызовет перенаправление при обнаружении атрибута [Authorize]. Пример:

[Authorize]
public ActionResult AccessPrivateData()
{
    // Should redirect to /Account/LogIn if AuthCookie not set
    // ...
}

Пока все хорошо. Моя проблема в том, что я не могу использовать [HttpPost] для действия входа в систему (потому что вы не можете перенаправить на POST):

[HttpPost]
public ActionResult LogIn(string username, string password)
{
    // Won't find the URL (/Account/LogIn) if redirected to here...
    // ...
}

но разве действие входа не изменит состояние, гарантируя POST? Пожалуйста, кто-нибудь предложит какое-нибудь объяснение, и если вы можете, как вы справляетесь с этим.

1 Ответ

2 голосов
/ 02 августа 2011

У вас может быть два действия для входа.Перенаправление будет использовать GET и будет отправлено на действие, которое просто отображает форму входа.

Когда форма будет опубликована, она будет использовать метод, украшенный [HttpPost]

[HttpGet]
public ActionResult Login()
{
  // Render view
}

[HttpPost]
public ActionResult LogIn(string username, string password)
{
  // Process form post
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...