Membership.create
사용자 기능을 사용 하고 있는데 다음 오류가 발생합니다.
필수 위조 방지 양식 필드 “__RequestVerificationToken”이 없습니다.
이 문제를 어떻게 해결할 수 있습니까?
답변
당신은 [ValidateAntiForgeryToken]
행동하기 전에 속성이 있습니다. 또한 @Html.AntiForgeryToken()
양식에 추가해야합니다 .
답변
필자의 경우 web.config 에이 기능이 있습니다.
<httpCookies requireSSL="true" />
그러나 내 프로젝트는 SSL을 사용하지 않도록 설정되었습니다. 해당 라인을 주석 처리하거나 항상 SSL을 사용하도록 프로젝트를 설정하면 해결되었습니다.
답변
이처럼 :
컨트롤러
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult MethodName(FormCollection formCollection)
{
...
Code Block
...
}
보기:
@using(Html.BeginForm())
{
@Html.AntiForgeryToken()
<input name="..." type="text" />
// rest
}
답변
또한 [HttpGet] 아래의 [ValidateAntiForgeryToken]을 사용하지 마십시오.
[HttpGet]
public ActionResult MethodName()
{
..
}
답변
쿠키가 활성화되지 않은 경우에도 오류가 발생합니다.
답변
이 문제를 일으킬 수있는 또 다른 것은 다음과 같습니다. 어떤 이유로 든 양식에서 모든 입력 필드를 비활성화하십시오. 확인 토큰을 보유한 숨겨진 입력 필드를 비활성화합니다. 양식이 다시 게시되면 토큰 값이 누락되고 누락 된 오류가 생성됩니다. 따라서 확인 토큰을 보유한 입력 필드를 다시 활성화하면 모든 것이 잘됩니다.
답변
요청의 일부로 파일을 업로드하는 사람들에게 또 다른 가능성. 콘텐츠 길이가 초과 <httpRuntime maxRequestLength="size in kilo bytes" />
하고 요청 확인 토큰을 사용하는 경우 브라우저는 'The required anti-forgery form field "__RequestVerificationToken" is not present'
요청 길이 초과 메시지 대신 메시지를 표시합니다 .
maxRequestLength를 요청에 맞게 충분히 큰 값으로 설정하면 즉각적인 문제가 해결되지만 적절한 해결책이 아니라는 것을 인정할 것입니다 (사용자는 요청 확인 토큰이 아닌 파일 크기의 실제 문제를 사용자가 알기를 원합니다).