セッションがアクティブかどうかを確認するために Play コントローラーで使用する簡単なアクションを作成しようとしています。
import play.api.mvc._
import scala.concurrent._
object AuthAction extends ActionBuilder[Request] {
def invokeBlock[A](request: Request[A], block: (Request[A]) => Future[SimpleResult]) = {
if (request.session.isEmpty) {
//Need to redirect to login page
Redirect("/login")
} else {
//Session is found, continue Action as normal
block(request)
}
}
}
問題は、認識しないことRedirect
です。この範囲で動作させるにはどうすればよいですか? 承認が必要なコントローラーでこのアクションを使用したい:
object Application extends Controller {
def index = AuthAction {
Ok(views.html.index("You are logged in."))
}
}
これら 2 つは別のファイルになります。
invokeBlock[A]
副次的な質問:との "A" は正確には何Request[A]
ですか?
Play 2.2.1、Scala 2.10.3、Java 1.8 64bit を使用しています
更新:これを試してみましたが、エラーは発生しなくなりましたが、機能しません-リダイレクトは無視されているようです。
import play.api.mvc._
import scala.concurrent._
import play.api.mvc.Results._
object AuthAction extends ActionBuilder[Request] {
def invokeBlock[A](request: Request[A], block: (Request[A]) => Future[SimpleResult]) = {
if (request.session.isEmpty) {
Redirect("/login")
}
block(request)
}
}