4
我在Spray中编写了一个自定义指令,用于管理任何用户请求的速率限制。如何获取自定义指令中的请求上下文?
我会在LimitManager
的某处处理每个请求的自定义限制和规则。该LimitManager
所需的唯一信息是userInfo
和currentRoute
,即不同路线的不同限制。
所以我可能会最终不得不像这样的指令:
def ensureLimit(): Directive0 =
if (LimitManager.isAuthorized(userInfo, currentRoute)) {
pass
} else {
reject
}
我怎样才能获得请求上下文中的指令中,所以我可以提供正确的信息给我LimitManager
?
要添加到记住!部分的思想延伸,你可能会遇到一种情况,你需要'RequestContext'引用,并且必须使用更多的指令(而不是'complete')。在这种情况下,您可以手动传递RequestContext对象。如果你需要处理期货:'get {ctx => onComplete(someFutureProducer(ctx)){...}(ctx)}' – Rich