我有一些路线是具体的管理和一些不是。
我的代码中有以下内容:
val route = pathPrefixTest("admin") { statusRoute ~ statsRoute } ~ securedRoutessecuredRoutes面向公共,并执行其他逻辑,比如签入用户登录,如果没有,则拒绝它们,而管理urls受内部LDAP保护,因此不需要这些检查。
我遇到的问题是,当有人键入"/ admin /mispelt_url“时,它不满足管理路线,并尝试安全路由。此时,它尝试检查用户是否已登录,并返回他们需要登录的错误。
我想要的是:
val route = pathPrefixTest("admin") { statusRoute ~ statsRoute } ~ **pathPrefixTest("NOT admin")** {securedRoutes}有路径匹配机制吗?
发布于 2015-01-16 12:19:42
在文档中,您可以使用unary_!来说“不是管理员”
By prefixing a matcher with ! it can be turned into a PathMatcher0 that only
matches if the underlying matcher does not match and vice versa.例子-
// matches anything starting with "/foo" except for /foobar
pathPrefix("foo" ~ !"bar")因此,您应该能够这样做(虽然没有测试)。
val route = pathPrefixTest("admin") { statusRoute ~ statsRoute } ~ pathPrefixTest(!"admin") {securedRoutes}https://stackoverflow.com/questions/27982918
复制相似问题