2017-08-03 105 views
0

documentation on ActionBuilder包含三個節點的管道:認證,添加信息,驗證步驟。如何在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) 
    } 
} 

回答

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") 
} 
相關問題