【发布时间】:2016-08-30 16:56:53
【问题描述】:
我正在尝试构建一个简单的操作以在 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."))
}
}
这两个将是不同的文件。
附带问题:invokeBlock[A] 和 Request[A] 中的“A”到底是什么?
我正在使用 Play 2.2.1、Scala 2.10.3、Java 1.8 64 位
更新:试过了,它不再给出任何错误,但它不起作用 - 重定向似乎被忽略了。
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)
}
}
【问题讨论】:
标签: scala playframework playframework-2.0