asp.net-mvc
  • antiforgerytoken
  • 2012-06-05 3 views 1 likes 
    1

    위조 방지 메커니즘을 사용하여 내 아약스 게시물을 보호하려고합니다.Ajax 게시 스로우 필수 위조 토큰이 제공되지 않았거나 유효하지 않았습니다.

    먼저 내보기

    @Html.AntiForgeryToken() 
    

    에 antiforgerytoken 도우미 메서드 호출을 추가 한 후

    var values = $(this).serialize() + "&__RequestVerificationToken=" + $("input[name='__RequestVerificationToken']").val(); 
    
    $.post(url, values) 
        .success(page.submitSuccess) 
        .error(page.submitError) 
        .complete(page.submitComplete); 
    

    은 물론 나는 ValidateAntiForgeryToken

    내 액션 메소드를 장식 내 JQuery와 포스트 호출을 조정했습니다
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(ProjectCreateCommand command) 
    { 
        .... 
    } 
    

    그러나 양식을 제출 한 후 필요한 위조 토큰이 제공되지 않았거나 유효하지 않습니다. 오류.

    토큰 쿠키를 삭제했으며 브라우저를 다시 시작했습니다.

    내가 누락 된 항목이 있습니까?

    답변

    1

    $(form).serialize();을 사용하면 모든 입력 태그를 직렬화하므로 $ .post jquery 메소드를 사용하여 입력 할 수 있습니다. 이런 식으로 뭔가를 시도 :

    $("#you_form").submit(function (e) { 
        e.preventDefault(); 
        $.ajax({ 
         type: 'POST', 
         url: $(this).attr("action"), // get url from action attribute, your route setted by the Html.BeginForm() 
         data: $(this).serialize(), // serialize all input tags from this form 
         success: page.submitSuccess; 
        }); 
    }); 
    

    @Html.AntiForgeryToken()를 사용하여 아무 문제가 없습니다 함께이 추가됩니다 방법을 직렬화.

    이 링크에서보세요 : 내가 얘기를 깜빡 했네요 http://api.jquery.com/jQuery.post/

    +0

    , 숨겨진 입력 양식 밖에 있습니다. – user49126

    +0

    양식에 넣을 수 있습니까? 올바르게 직렬화하기 위해서는 형식에 있어야합니다. –

    +0

    결과는 같습니다. – user49126

    관련 문제