2016-06-17 8 views
3

Play 2.5.4のCSRFfiltersはどのように実装されますか?プレイのドキュメントは間違っています(コンパイルされず、再生の下では実行できません)。ここの例はコンパイルされません(Play 2.5 disable csrf protection for some requests)。Play 2.5.4 - CSRFフィルタの実装方法

2.5 java APIにはCRSFFilterクラスがありますが、EssentialFilterのサブクラスではないため、間違った型のEssentialFiltersの配列に追加することはできません。

この機能は現在Play 2.5.4で壊れていますか、または現在誤解を招く/間違っているドキュメントですか?

答えて

1

このコードはPlay 2.5.4 Javaでうまく動作します。 アプリ/ Filters.javaファイルを作成し、build.sbt

libraryDependencies += filters 

にして、application.confにこの

import javax.inject.*; 
import play.*; 
import play.mvc.EssentialFilter; 
import play.http.HttpFilters; 
import play.mvc.*; 
import play.filters.csrf.CSRFFilter; 

public class Filters implements HttpFilters { 

    private CSRFFilter csrfFilter; 

    @Inject 
    public Filters(
     CSRFFilter csrfFilter) { 
     this.csrfFilter = csrfFilter; 
    } 

    @Override 
    public EssentialFilter[] filters() { 
     return new EssentialFilter[] { 
      csrfFilter.asJava() 
     }; 
    } 
} 

追加のフィルタ依存性を置く置く

play.modules.enabled += "play.filters.csrf.CSRFModule" 
    # CSRF config 
play.filters.csrf { 

    token { 
    name = "csrfToken" 
    sign = true 
    } 

    cookie { 
    name = null 
    secure = ${play.http.session.secure} 
    httpOnly = false 
    } 

    body.bufferSize = ${play.http.parser.maxMemoryBuffer} 
    bypassCorsTrustedOrigins = true 

    header { 
    name = "Csrf-Token" 
    protectHeaders { 
     Cookie = "*" 
     Authorization = "*" 
    } 
    bypassHeaders {} 
    } 

    method { 
    whiteList = ["GET", "HEAD", "OPTIONS"] 
    blackList = [] 
    } 

    contentType { 
    whiteList = [] 
    blackList = [] 
    } 

    errorHandler = null 
} 
あなたはより多くを学ぶことができます

ここの設定についてhttps://www.playframework.com/documentation/2.5.x/resources/confs/filters-helpers/reference.conf

ただ輸入ヘルパー

@import helper._ 

テンプレートファイルは、私のために働いたこの

<form method="POST" action="..."> 
@CSRF.formField 
+0

おかげで、のようなフォームで使用します。 –

関連する問題