LoginSignup
2
2

More than 5 years have passed since last update.

フィルタを追加する

Posted at

Play FrameworkでHTTPフィルタを追加する

未ログイン時はログイン画面を表示するようなフィルタを追加する。
ログイン状態の判定はセッション(実体はCookie)にて行う。

AuthenticateFilter.scala
package controllers.filter

import play.api.mvc.EssentialFilter
import play.api.mvc.EssentialAction
import play.api.mvc.RequestHeader
import play.api.libs.iteratee.Done
import play.api.mvc.Results

class AuthenticateFilter extends EssentialFilter {

  def apply(next: EssentialAction) = new EssentialAction {
    def apply(req: RequestHeader) = {
      // 認証チェック
      req.session.get("key").map(
        // 認証に成功したら普通に処理を流す
        value => next(req)
      ).getOrElse(
        // 認証エラー
        Done(Results.Redirect(controllers.login.routes.Login.login))
      )
    }
  }
}
Global.scala
import play.api.GlobalSettings
import play.api.mvc.WithFilters
import controllers.filter.AuthenticateFilter

/**
 * Globalオブジェクト
 */
object Global extends WithFilters(new AuthenticateFilter) with GlobalSettings 
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2