【问题标题】:Spring Interceptor and AuthenticationFilter Order of ExecutionSpring拦截器和AuthenticationFilter的执行顺序
【发布时间】:2019-05-23 06:32:19
【问题描述】:

我有一个 LoginHandler 和一个 Interceptor。我希望拦截器在AuthenticationFilter 之前执行。有没有办法指定执行顺序?

更新: 标题提到了LoginHandler。我把它改成了AuthenticationFilter

【问题讨论】:

  • spring 中的执行顺序通常使用org.springframework.core.Ordered 接口指定,不确定这是否适用于您的情况,但您可以试一试。
  • 如果你想在组件的生命周期中执行一些东西,那么参考文档部分:docs.spring.io/spring/docs/5.1.7.RELEASE/…如果你想拦截该方法,那么你可以使用spring AOP。
  • @SudhirDhumal 我不是在问如何实现Interceptors,因为我已经有了一个拦截器。我要问的是拦截器如何优先于AuthenticationFilter
  • 拦截器总是在过滤器之后执行。过滤器是 servlet 规范的一部分,拦截器作为DispatcherServlet 的请求处理的一部分执行。过滤器总是在 servlet 之前执行,因此拦截器总是在过滤器之后调用。没有注释,订购可以改变这一点。

标签: spring spring-boot


【解决方案1】:

来自 Spring 的 HandlerInterceptor 永远不会在过滤器之前执行。

javax.servlet.Filter 是 Java Servlet API 的一部分,请求总是先通过Filter 实例,然后再到达Servlet

HandlerInterceptor 实例作为DispatcherServlet(实现javax.servlet.Servlet)内的请求处理的一部分执行。如前所述,流程是Filter -> Servlet 结果是HandlerInterceptor 将始终在Filter 之后执行。

你想要的也是可能的,不是的。无论您向HandlerInterceptor 添加多少订单。

【讨论】:

  • 好吧,那我就用过滤器代替拦截器
猜你喜欢
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-09
  • 2012-03-31
  • 1970-01-01
相关资源
最近更新 更多