2017-08-03 9 views
0

documentation on ActionBuilderには、認証、情報の追加、検証ステップという3つのノードのパイプラインが含まれています。スカラ・プレイ2.6でActionBuilderでセッションを設定する方法は?

認証ステップでセッション値を設定したいと思います。私はあなたがそうのような要求セッションに値を追加するためのアクション組成を行う必要がありますここに来る.withSessionOk(_).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) 
    } 
} 

答えて

0

を意味する:

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") 
} 
関連する問題