akka-http 应用 javax.servlet.Filter

akka-http apply javax.servlet.Filter

如何在下面添加实现接口 javax.servlet.Filter into an Akka-http service, for instance the example one AkkaHttpMicroservice 的 class:

object AkkaHttpMicroservice extends App with Service {
  override implicit val system = ActorSystem()
  override implicit val executor = system.dispatcher
  override implicit val materializer = ActorMaterializer()

  override val config = ConfigFactory.load()
  override val logger = Logging(system, getClass)

  Http().bindAndHandle(routes, config.getString("http.interface"), config.getInt("http.port"))
}

在 Scalatra 中,需要 override def init(context: ServletContext),然后 context.addFilter("mySecurityFilter", SecurityFilter),但不清楚在 akka-http 中哪里可以访问 ServletContext

很遗憾,Akka-Http 不是基于标准 Java Servlet API。实际上,整个 HTTP 处理是从 TCP 连接级别重新实现的。这样做是为了充分利用 Akka/Akka Streams 的强大功能。但是,这意味着您不能将 javax.servlet.Filter 应用于基于 Akka 的应用程序。您可能想要使用的是 Directives.