複数のエンドポイントがあります。finagle フィルターを使用してエンドポイントに共通のフィルターを適用できますが、特定のエンドポイントにフィルターを適用したいと考えています。どうすればこれを達成できますか?
質問する
282 次
2 に答える
0
これが私がそれを回避した方法です。おそらく理想的ではありませんが、機能します。
class AuthenticatedEndpoint[A](e: Endpoint[A])(implicit auth: Request => Boolean) extends Endpoint[A] { self =>
final def apply(mapper: Mapper[A]): Endpoint[mapper.Out] = mapper(self)
final def apply(input: Input): Endpoint.Result[A] =
if (auth(input.request)) {
e(input)
} else {
EndpointResult.Matched[Nothing](input, Rerunnable( Unauthorized(new Exception(s"Authentication Failed."))) )
}
}
object AuthenticatedEndpoint {
def validSession[A](e: Endpoint[A]): Endpoint[A] = new AuthenticatedEndpoint(e)
}
于 2018-10-30T13:50:35.807 に答える