キャッチされた例外を、ログインしているユーザーのユーザー オブジェクトを運ぶ例外にラップするルートを作成しようとしています。ContextRequest
理想的には、その情報を自分で使用するためにに入れることを好みますExceptionHandler
が、それは不変です。
これを行う正しい方法は、この例mapInnerRoute
で説明されているように使用することであると結論付けました。
def completeWithUserAwareException(user: User) =
mapInnerRoute { route =>
ctx =>
try {
route(ctx)
} catch {
case ex: Throwable =>
ctx.fail(new ExceptionWithUser(user, 0, ex))
}
}
私はこのように使用します
val authenticatedRoutes = myAuthorization { user =>
completeWithUserAwareException(user) {
pathPrefix("admin") {
(get & path("plugins")) {
complete {
""
}
}
}
}
}
のコンテンツがcompleteWithUserAwareException
呼び出されることはありません。外側のルートの動的な性質と関係があるのではないかと思います。
ユーザー コンテキスト情報を例外ハンドラに渡すという目標を達成するにはどうすればよいですか?