1。SessionFilter.scalaコードを書き込みます
Packersimport javax.inject。{Inject、Singleton} Import akka.stream.stream.materializerimport Controllers.api.mvc。{filter、requestheader、result、results} import scala.concurrent.future @singonedonclass sessionfilter @Inject( requestheader => future [result])(requestheader:requestheader):future [result] = {if(!requestheader.session.get( "user")。isdefine&&!requestheader.path.contains( "/signin")&&!requestheader.path.contains( "/assets/"){{ future.successful(results.redirect(routes.signcontroller.showsignin())} else {nextfilter(requestheader)}}}}}説明:
!requestheader.session.get( "user")。isdefinedは、セッションにユーザーが存在するかどうかを判断するために使用されます
!requestheader.path.contains( "/signin")は、ログインページを除外するために使用されます。このページは、デッドループジャンプを防ぐために、ログインしていない場合は表示する必要があります。
!requestheader.path.contains( "/assets/")は、写真、CSS、JavaScriptなどの静的なリソースファイルを除外するために使用されます。
2。filters.scalaでsessionfilterをアプリディレクトリに使用します
filters.scalaファイルは、アクティベーターによって自動的に生成されるテンプレートです。 sessionfilterを使用するには、sessionfilter:sessionfilterとseq(sessionfilter)を追加します。
javax.inject._importフィルター。{examplefilter、sessionfilter} import play.api.api.api.api.api.http.httpfiltersimport play.api.mvc ._/***このクラスは、リクエストごとに実行されるフィルターを構成します。この *クラスは、フィルターのリストを取得するためにプレイによって照会されます。 * *再生は、ルートパッケージに配置された *「フィルター」と呼ばれるクラスのフィルターを自動的に使用します。 「play.http.filters」設定を * `application.conf`構成ファイルに追加することにより、別のクラスからフィルター *をロードできます。 * * @param env現在のアプリケーションの基本環境設定。 * @param ExampleFilter各応答 *にヘッダーを追加するデモンストレーションフィルター。 */ @singletonclass filters @inject()(env:環境、examplefilter:examplefilter、sessionfilter:sessionfilter)httpfilters {override valフィルター= {//開発モードを実行している場合は、サンプルフィルターを使用します。 //生産モードまたはテストモードで実行されている場合、//フィルターをまったく使用しないでください。 if(env.mode == mode.dev)seq(examplefilter)else seq.empty seq(sessionfilter)}}}上記は、SCALAがSESSIONFILTERフィルタリングを実装するためにプレイするために導入されたエディターです。ログインページにジャンプしていないユーザー。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!