【问题标题】:How to set a session in ActionBuilder in scala play 2.6?如何在 scala play 2.6 中的 ActionBuilder 中设置会话?
【发布时间】:2017-08-03 23:33:24
【问题描述】:

documentation on 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)
    }
}

【问题讨论】:

    标签: scala session playframework actionbuilder


    【解决方案1】:

    您需要执行操作组合以向请求会话添加值,如下所示:

    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")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 2021-12-02
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      相关资源
      最近更新 更多