在Play中编写两个ActionBuilders

时间:2014-03-07 01:14:57

标签: scala playframework-2.0

我有控制器,我想这样称呼

def getSensitiveData = Authenticated.hasPermissions(Permissions.ADMIN).async { 
  implicit request =>
    Future.successful(Ok)
  }
}

并且喜欢这个

def getLessSensitiveData = Authenticated.async { implicit request =>
  Future.successful(Ok)
}

其中Authenticated是一个ActionBuilder,用于检查某些授权逻辑的请求。我希望Authenticated有一个方法允许我向授权逻辑添加一些进一步的约束,或者理想情况下,在auth逻辑将用户拉出数据库后,它会进一步检查以确保用户实际拥有我们期望的权限。

不幸的是,我被限制为不使用包装请求,但我想知道如何实现方法链接来更改调用块的默认行为,或者两个可能组成另一个操作。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好吧,我放弃了这个...... ActionBuilders看起来并不像他们看起来那么方便但是建立这样的方法

def hasPermissions [A](权限:权限*)(块:用户=>未来[SimpleResult])                           (隐式请求:请求[A]):未来[SimpleResult]

虽然你可能会发现自己有很多括号和缩进,但它很容易编写得很好。