在spray

时间:2016-05-27 12:22:05

标签: scala spray spray-routing

由于这一行,似乎无法将授权指令嵌套在喷雾中:https://github.com/spray/spray/blob/76ab89c25ce6d4ff2c4b286efcc92ee02ced6eff/spray-routing/src/main/scala/spray/routing/directives/SecurityDirectives.scala#L55

我指的是做这样的事情:

val route = { 
  ...
  authorize(userIsAdmin) {
    path("generic" / "admin" / "stuff") { ... } ~
    path("users" / Segment) { u =>
      authorize(canModifyUser) {
        ...
      }
    } ~
    path("quotas") {
      authorize(canModifyQuotas) {
        ...
      }
    }
  }
}

当然可以重构一下,将userIsAdmin包含在canModifyUser和canModifyQuota检查中,但具有正交访问权限,可能会失控。

这条线的原因是什么?我为什么要取消任何进一步的授权失败似乎不合逻辑。

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

0 个答案:

没有答案