28

방금 ​​ASP.Net MVC 4 RC를 설치하여 ASP.Net MVC 4 베타를 대체했습니다. 기존 응용 프로그램을 실행하려고하면 AntiForgeryToken이 더 이상 사용되지 않는다는 오류 메시지가 나타납니다. 여기에 내 코드입니다 :AntiForgeryToken은 ASP.Net MVC 4 RC에서 더 이상 사용되지 않습니다.

using (Html.BeginForm("", "", FormMethod.Post, new { id = "MonthElectionForm" })) 
{ 
    @Html.AntiForgeryToken("AddEditMonthElection") 
} 

---- UPDATE ---

ASP.Net MVC 4 RC는 ValidateAntiForgeryToken 속성과 AntiForgeryToken의 HTML 도우미의 소금 속성이 사용되지 않는했다. 그래서, 지금 내 코드는 다음과 같습니다

컨트롤러 :

 [HttpPost] 
     [ValidateAntiForgeryToken] 
     public JsonResult CreateCompany(CompanyDataEntryViewModel modelData) 
     {...} 

형태 :

@using (Html.BeginForm("", "", FormMethod.Post, new { id = "CreateCompanyDataEntryForm" })) 
{ 
    @Html.AntiForgeryToken() 
... 
} 

가 생성 된 HTML을 보면은, AntiForgeryToken 여전히 숨겨진 필드를 생성하고 암호화 된 가치를 제공합니다. 내 행동은 여전히 ​​효과가 있습니다. 그러나 암호화 과정에서 사용할 키를 지정하는 기능을 잃어 버렸습니다. 나는 그 과정이 어떻게 작동하는지 너무 확신하지 못하지만, 나는 행동과 형식에 소금 값을 설정한다고 말할 수 있기 전에. 조치가 게시물을 승인하려면 값이 일치해야합니다. 이제 소금 값을 어떻게 정하니? 나는 그것이 AntiForgeryConfig AdditionalDataProvider와 관련이 있다고 생각하지만 AntiForgeryConfig AdditionalDataProvider를 사용하는 방법에 대해 인터넷 검색을 찾을 수 없다. 도와주세요.

감사 매개 변수가 불필요하며 추가적인 보호를 제공하지 않았다, 그래서 우리는 대한 지원을 제거 소금을 설정

+6

자세한 오류 메시지가 표시됩니까? "이 메서드는 대신 사용되지 않으므로 AntiForgeryToken() 메서드를 대신 사용하십시오. 토큰 내에 포함 할 사용자 지정 데이터를 지정하려면 정적 AntiForgeryConfig.AdditionalDataProvider 속성을 사용하십시오." –

+0

예, 세부적인 오류 메시지를 보았습니다. AntiForgeryConfig.AdditionalDataProvider 속성은 어떻게 사용합니까? 이전처럼 행동에 속성을 더 이상 사용할 수 없습니까? AntiForgeryConfig.AdditionalDataProvider 속성을 googleing 할 때별로 보이지 않습니다. –

답변

43

.

자세한 내용은 내 응답 How to choose a salt value for ValidateAntiForgeryToken을 참조하십시오.

+1

아, 이제 이해가됩니다. 솔트 값을 위해 우리가 사용하고 있던 값이 암호화 과정에서 사용되었다고 가정했습니다. 이 문제를 해결해 주셔서 감사합니다. –

+1

그래서 같은 페이지에 여러 로그인 양식 (다른 방법)이 있고 각 페이지에 토큰이 필요한 경우 어떻게합니까? 하나의 양식이 시작되었지만 다른 양식이 선택되어 제출되었으므로 토큰에 오류가 발생하는 문제가 발생합니다. (내부 사용자 로그인 대 외부 사용자 로그인과 같습니다.) – Craig

관련 문제