2013-08-22 3 views
2

사용자 로그인 페이지가있는 MVC 4 프로젝트에서 작업하고 있습니다. 그것은 모두 잘 작동합니다.리디렉션 URL이 정확하지 않습니다.

로그 아웃 할 링크를 클릭하면 리디렉션 URL이 잘못되었습니다.

보기 :

<a href="@Url.Action("LogOff", "Account")">Logout ?</a> 

컨트롤러 :

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult LogOff() 
    { 
    WebSecurity.Logout(); 

     return RedirectToAction("Login", "Account"); 
    } 

내가 로그 아웃 링크를 클릭의 URL 쇼 여기

더를 설명하는 코드입니다 나 ==> Account/LogOff

하지만 이쪽으로 리디렉션하고 싶습니다. ==>Account/Login

무슨 일이 벌어지고 있는지 알고 있습니까?

+3

이것은 HttpGet 요청 AFAIK이어야하며 HttpPost 속성을 제거해야합니다. 올바른 웹 페이지로 리디렉션합니까? – VsMaX

답변

4

HTML에서 앵커 요소 (<a>)는 POST가 아닌 GET 요청을 전송하므로 [HttpPost] 컨트롤러 동작이 호출되지 않습니다. 당신은 당신이 작업을 호출하려면 POST 방법과 HTML 양식을 사용한다 :

@using (Html.BeginForm("LogOff", "Account", FormMethod.Post)) 
{ 
    @Html.AntiForgeryToken() 
    <button type="submit">Logout ?</button> 
} 

는 또한 컨트롤러의 동작이 [ValidateAntiForgeryToken] 속성들로 장식되어 있기 때문에 양식 내부 AntiForgery 토큰을 포함 통지를 따라서 그것을 기대 .

+0

아하 .. 이제 알아. 대단히 감사합니다. – user2232273

2

HttpPost 특성을 제거하면 모든 것이 잘됩니다.

[ValidateAntiForgeryToken] 
public ActionResult LogOff() 
    { 
    WebSecurity.Logout(); 

     return RedirectToAction("Login", "Account"); 
    } 
+0

마이클 감사합니다. 지금 일하고있어. – user2232273

관련 문제