2017-03-24 15 views
1

Scala Playを使用して簡単なフォーム投稿をしようとすると、不正なエラーが発生します。ここでシンプルフォーム投稿受信者

POST  /receiveForm    controllers.HomeController.receiveForm 

HomeController.scalaファイルされる:ここで

は私routesファイルです

def receiveForm = Action { implicit request => 
    println("receiveForm method") 
    Ok(views.html.index()) 
} 

ここでは私のindex.scala.htmlです:

@helper.form(routes.HomeController.receiveForm()) { 
    <input type="submit" name="submit" /> 
} 

は、CSRFに見えたが、取得することはできませんそれは機能する。

答えて

1

実際には、CSRFトークンが見つからないか無効である場合、再生のCSRFフィルタからUnauthorizedという応答を得ることができます。

hereのようにCSRFフィルタをイネーブルにしましたか?私はあなたがしたと仮定しています。期待どおりのCSRFトークンを投稿しないため、このエラーが発生していることが確認されます。ここでは、ポストのクエリ文字列に必要なトークンを含めるためにフォームを変更する必要があり方法は次のとおりです。

@import helper._ 

@form(CSRF(routes.HomeController.receiveForm())) { 
    <input type="submit" name="submit" /> 
} 

私はまた、あなたが最初にGET要求を通じてフォームを表示すると仮定しています。これは、hereのように、最初のトークンを作成するために必要です。残りはそのまま残すべきです。

トークンをフォームに追加する他の方法(例:入力フィールド)については、https://playframework.com/documentation/2.5.x/ScalaCsrf#Getting-the-current-tokenを参照してください。

関連する問題