我的自定义身份验证操作就像
def Authenticated(rights: String*) = new ActionBuilder[MyAuthenticatedRequest] {
***
}
在我的控制器中,我使用此操作来检查用户是否有权查看页面
def password = Authenticated(UserRights.USER) { implicit request: MyAuthenticatedRequest[_] =>
Users.findById(request.account.id) match {
case Some(user) => Ok(views.html.settings.password(frontUser, user))
case _ => NotFound
}
}
我的对象用户使用光滑来检索数据库中的用户
def findById(id: Long)(implicit s: Session): Option[User] = users.where(_.id === id).firstOption
在我的控制器中,我有一个错误
could not find implicit value for parameter s: play.api.db.slick.Config.driver.simple.Session
这是因为我必须在查询数据库之前在我的控制器中打开一个会话。
我想使用play-slick提供的DBAction并使用我的身份验证操作进行组合,但是我在理解动作组合的工作方式时遇到了一些问题