2011-11-25 4 views
3

동일한 cshtml 페이지의 컨트롤러에 게시 할 수있는 양식이 두 개 이상일 경우 Antiforgery 유효성 검사가 작동하지 않습니다. 우리는 MVC3 코드를 통해 가서 우리는 문제가 코드의이 부분에서 발견 :동일한 MVC3 페이지에서 AntiForgery 유효성 검사와 함께 여러 개의 ajax 양식을 사용하려면 어떻게해야합니까?

@using (@Ajax.BeginForm()) { 
    @Html.AntiForgeryToken() 
    <input type="submit" class="buttonBlue" value="form1" /> 
} 

@using (@Ajax.BeginForm()) { 
    @Html.AntiForgeryToken() 
    <input type="submit" class="buttonBlue" value="form2" /> 
} 

당신은 내가이 문제를 해결하는 데 도움이 수 :

if (!String.Equals(cookieToken.Value, formToken.Value, StringComparison.Ordinal)) { 
      // error: form token does not match cookie token 
      throw CreateValidationException(); 
} 

우리가 가지고있는 cshtml이 같은 것입니다 발행물? 우리는 위조 방지 토큰 중 하나를 제거한 후 예상대로 작동하는 것으로 나타났습니다.

위장 방지용 컴퓨터 키 설정을 시도했지만 작동하지 않았습니다.

감사합니다.

답변

6

AntiForgeryToken을 여러 번 사용하려면 다음을 수행하십시오. 이 위대한 작품을

@Html.Raw(ViewBag.__RequestVerificationToken) 
+0

감사 :

ViewBag.__RequestVerificationToken = @Html.AntiForgeryToken().ToString(); 

그럼, 내가 토큰을해야하는 각 형태로, 나는 다음을 추가 첫째, 내보기의 상단에, 나는 다음 줄을 추가! –