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