0

據我瞭解[HttpPost]屬性,或任何POST方法,它在狀態改變時使用。但是,如果您設置窗體身份驗證與像loginUrl:ASP.NET MVC HttpPost和SignOn()混淆

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

這將強制重定向時遇到[授權]屬性。例如:

[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 ?請有人提供一些解釋,如果可以的話,你如何處理這個問題。

回答

2

您可能有兩個登錄操作。重定向將使用GET併發送到簡單呈現登錄表單的操作。

當窗體發佈,它會用飾有[HttpPost]

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

[HttpPost] 
public ActionResult LogIn(string username, string password) 
{ 
    // Process form post 
} 
+0

我碰到[這個問題/答案]附帶的方法(http://stackoverflow.com/questions/5332275/why-would-之前使用i-use-httppost-attribute-in-mvc)。我應該記得!謝謝 – Didaxis