Scala Playframework是怎样的';谁的会话被注入到动作中?

Scala Playframework是怎样的';谁的会话被注入到动作中?,scala,slick,playframework-2.3,implicits,Scala,Slick,Playframework 2.3,Implicits,我试图编写自己的操作,并隐式地传入数据库会话。然而,在我的控制器中,我最多只能做这样的事情 def index = MyAction { implicit myRequest => implicit val dbss = myRequest.databaseSession aClass.someMethod() // requires an implicit DatabaseSession } 在playframework中,您可以访问会话,如下所示: def index = A

我试图编写自己的操作,并隐式地传入数据库会话。然而,在我的控制器中,我最多只能做这样的事情

def index = MyAction { implicit myRequest =>
  implicit val dbss = myRequest.databaseSession
  aClass.someMethod() // requires an implicit DatabaseSession
}
在playframework中,您可以访问会话,如下所示:

def index = Action { implicit request =>
  val someOption = session.get("something")
  // OR
  aClass.doSomething() // requires an implicit Session
}
在这里,我们可以看到,当只有请求作为隐式传递时,您可以直接访问会话。那么会议从何而来?我怎样才能像数据库会话一样通过数据库会话呢?这样我就不用写了:

implicit val dbss = myRequest.databaseSession
我知道这是可能的,因为slick能够隐式地通过他们的dbSession。但我似乎也不知道他们是怎么做到的


完全糊涂了=经过艰苦的挖掘,我找到了自己问题的答案

秘密在于控制器,它有一个隐式定义:

implicit def request2session(implicit request: RequestHeader): Session

PlayFramework,你很聪明

你试过玩Slick插件吗?是的,我有,但我需要将DBAction与on-AuthAction混合用于身份验证。这就是为什么我需要理解这个概念来构建我自己的。你能同时共享DBAction和AuthAction的签名吗?对不起,我不明白你所说的共享签名的意思。你是说把动作组合在一起?维基说,创作起来相当困难:你似乎把剧本
会话
和流畅的db
会话
搞混了。它们根本不是一回事。