0
모든 요청에 대해 CSRF 필터를 사용하지 않으려합니다. 하지만 내 양식에서 사용하고 싶습니다. 그래서 내가 컨트롤러에서 다음과 같이 CSRFAddToken 및 CSRFCheck를 사용Play Framework 2.5 CSRF 확인 실패 ajax
이def change(lng: String) = checkToken {
Action { implicit request =>
registerForm.bindFromRequest.fold(
{ formWithErrors =>
Ok(Json.toJson(JsObject(Map("status" -> JsString("error"), "message" -> JsString(messagesApi.translate("register.all_fields_required", Seq()).get)))))
},
value =>
[Code was cutted]
)
}
}
def getCurrent(lng: String) = addToken {
Action { implicit request =>
Ok(views.html.profile_edit_popup())
}
}
보기에서 난 그냥 그런 을 형성 CSRF를 추가
@CSRF.formField
을 사용 나는 아약스 사용하고 양식 HTML을 얻기에 getCurrent 조치를 얻을 save on 액션을 변경하기 위해 Ajax를 사용하여 게시합니다. 문제는 내가
CSRF 토큰 검사가 제출에
오류를 실패 얻고있다. 그렇더라도 CSRF 숨겨진 필드가이 양식에 표시됩니다. 내가 뭘 잘못하고있어?
아마도 jQuery 또는 무엇이든지'csrfToken' 필드를 올바르게 선택하지 않았습니까? –
또한'Csrf-Token' 헤더를 설정해야합니다! [이 예] (https://github.com/mohiva/play-silhouette-angular-seed/blob/9008dd9a93ff7fcfcfba8c182903b0a997beb034/ui/app/scripts/app.js#L62)를 참조하십시오. CSRF 토큰은 사용자 정의 쿠키로 전송됩니다 (app.conf 참조). –
@ insan-e 당신이 옳았다. 대답 해 줄 수 있니? – user2975535