繁体   English   中英

如何在Scala Play 2.6中的ActionBuilder中设置会话?

[英]How to set a session in ActionBuilder in scala play 2.6?

ActionBuilder上文档包含三个节点的管道:身份验证,添加信息,验证步骤。

我想在身份验证步骤中设置会话值。 我的意思是.withSession出现在这里Ok(_).withSession(_)

import play.api.mvc._

class UserRequest[A](val username: Option[String], request: Request[A]) extends WrappedRequest[A](request)

class UserAction @Inject()(val parser: BodyParsers.Default)(implicit val executionContext: ExecutionContext)
    extends ActionBuilder[UserRequest, AnyContent] with ActionTransformer[Request, UserRequest] {
    def transform[A](request: Request[A]) = Future.successful {
        new UserRequest(request.session.get("username"), request)
    }
}

您需要进行操作组合,以将值添加到请求会话中,如下所示:

object WithSession extends ActionBuilder[Request] {
  def invokeBlock[A](request: Request[A], block: (Request[A]) => Future[Result]) = {
      block(request).map(_.withSession("key" -> "value"))
  }
}

在您的控制器中:

def index = WithSession {
  Ok("result")
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM