2012-02-20 4 views
3
@using (Html.BeginForm("Create", "Posts", FormMethod.Post, new { id = "publish" })) 
{ 
    @Html.AntiForgeryToken("Posts/Create") 
    <input type="text" id="url" name="url" /> 
    <input type="submit" value="@Html.Resource("Publish")" /> 
} 

[HttpPost] 
[ValidateAntiForgeryToken] 
public JsonResult Create(string url) 
{ 
    // stuff that's never reached 
} 

CSRF 토큰의 유효성을 검증 할 때이 단순한 형식이 실패하는 이유를 알 수 없습니다. 어떻게 디버깅 할 수 있습니까?필요한 위조 토큰이 제공되지 않았거나 유효하지 않았습니다.

업데이트

나는 소금을 제거하면 작동; 이상한 것은 소금으로 작업하는 데 사용되며, 왜 더 이상 그렇지 않은지 알 수 없습니다.

답변

5

당신이 너무 ValidateAntiForgeryToken 필터에 전달하기 위해 당신이 염을 사용하려면 :

[HttpPost] 
[ValidateAntiForgeryToken(Salt = "Posts/Create")] 
public JsonResult Create(string url) 
{ 
    ... 
+0

그것을 전에 던지는되지 않은 이유를 궁금해. 고맙습니다. – bevacqua

관련 문제