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.
如何在下面添加实现接口 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.