Scala 喷雾嵌套

Scala 喷雾嵌套,scala,spray,spray-routing,Scala,Spray,Spray Routing,由于以下原因,似乎不可能在spray中嵌套授权指令: 我指的是这样做: val route = { ... authorize(userIsAdmin) { path("generic" / "admin" / "stuff") { ... } ~ path("users" / Segment) { u => authorize(canModifyUser) { ... } } ~ path("quotas"

由于以下原因,似乎不可能在spray中嵌套授权指令:

我指的是这样做:

val route = { 
  ...
  authorize(userIsAdmin) {
    path("generic" / "admin" / "stuff") { ... } ~
    path("users" / Segment) { u =>
      authorize(canModifyUser) {
        ...
      }
    } ~
    path("quotas") {
      authorize(canModifyQuotas) {
        ...
      }
    }
  }
}
当然,可以重构它,将userIsAdmin包含到canModifyUser和canModifyQuota检查中,但是使用正交访问权限,这可能会很快失控

那条线的原因是什么?在我看来,取消任何进一步授权失败的原因似乎不合逻辑


完全公开:如果其中一个嵌套检查失败,路由实际上将被拒绝,但它将给出一个404错误(EmptyRejection),而不是预期的AuthorizationFailedRejection。

也许这有帮助:。您观察到的实际问题是什么?也许这也是相关的(授权指令的位置):谢谢,@AndreasJim Hartmann,第一个链接解释了为什么会有取消拒绝(兄弟授权指令),不幸的是,这里没有解决问题的方法……也许这有帮助:。您观察到的实际问题是什么?也许这也是相关的(授权指令的位置):谢谢,@AndreasJim Hartmann,第一个链接解释了为什么存在取消拒绝(兄弟授权指令),不幸的是,没有解决问题的方法。。。