すべてのリクエストに対して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())
}
}
ビューでは、私はちょうどその時、私はアヤックスを使用してgetCurrentアクションを取得し、フォームのHTMLを取得 を形成するために、CSRFを追加する
@CSRF.formField
を使用し、 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トークンがカスタムCookieとして送信されることに注意してください(app.confを参照)。 –
@ insan-eあなたは正しいです。答えることができますか? – user2975535