2017-10-12 18 views
0

他のフィルタを無効にしながら(ホストフィルタリングやCSRFフィルタリングなど)、1つの再生フィルタを有効にしようとしています。 Scalaプレイフレームワークで特定のフィルタのみを有効にする

これ

は私の application.conf file

Illegal 'x-forwarded-for' header: Invalid input ':', expected listSep or 'EOI' (line 1, column 13) 

play.http.filters=<filter that I am enabling> 
play.filters.disabled+=play.filters.hosts.AllowedHostsFilter 
play.filters.disabled+=play.filters.csrf.CSRFFilter 

それは私が一番最初にラインplay.http.filters=<filter that I am enabling>を追加した後、私はお馴染みのエラーメッセージを見るように、無効なフィルタは、再び有効になってしまったように思えます

スカラープレイフレームワークで特定のフィルターを無効にし、特定のフィルターを有効にする正しい方法は何ですか?

答えて

1

play 2.6では、デフォルトフィルタを無効/有効にするには、changie application.confを使用します。デフォルトフィルタを有効にするには、play.filters.enabledを追加する必要があります。デフォルトフィルタを無効にするには、play.filters.disabledを追加する必要があります。

私はここにいくつかの混乱があると思います。 play.http.filtersは、アプリ内のクラスの完全修飾クラス名である必要があります。このクラスは、フィルタを有効/無効にします。 documentationで説明したようにプレイ2.6では

import javax.inject.{Inject, Singleton} 

import play.api.http.DefaultHttpFilters 
import play.api.http.EnabledFilters 
import play.api.mvc.{EssentialAction, EssentialFilter} 

import scala.concurrent.ExecutionContext 

// Our example filter 
@Singleton 
class ExampleFilter @Inject()(implicit ec: ExecutionContext) extends EssentialFilter { 
    override def apply(next: EssentialAction) = EssentialAction { request => 
    next(request).map { result => 
     result.withHeaders("X-ExampleFilter" -> "foo") 
    } 
    } 
} 

// All our filters 
class Filters @Inject()(
    defaultFilters: EnabledFilters, // respect play.filters.enabled and play.filters.disabled 
    exampleFilter: ExampleFilter, // you can pass user-defined filter 
) extends DefaultHttpFilters(defaultFilters.filters: _*) 
+0

ありがとうございました。しかし、私が望む唯一のフィルタは、デフォルトのフィルタではなく、第三者のライブラリからのフィルタです。 play.filters.enabledはデフォルトの再生フィルタでのみ動作するようです。この場合、どのようにデフォルトフィルタを有効にすることができますか?ありがとうございました – experimenter

0

は、あなたがplay.filters.enabled=[youDesiredFilter]を行うことができるようになります。ここでは無効/ play.filters.enabled設定を尊重し、フィルタの簡単な例です。

このリストのフィルタのみが有効になります。すべてのデフォルトフィルタがリストにない場合、無効になります。

関連する問題