是否有一个在UsernamePasswordAuthenticationFilter之前调用的Spring拦截器?

时间:2011-09-19 11:05:06

标签: java spring spring-mvc

我想在UsernamePasswordAuthenticationFilter之前调用一个方法。attemptAuthentication()被调用(在应用程序中处理任何其他请求之前)。

我尝试在HandlerInterceptorAdapterpreHandle()中调用该方法,但这不会在attemptAuthentication()之前触发,尽管它会处理其他类型的请求。

是否有UsernamePasswordAuthenticationFilter之前调用的Spring拦截器?

2 个答案:

答案 0 :(得分:4)

我猜你在谈论Spring安全过滤器链。

应在UsernamePasswordAuthenticationFilter

之前调用具有此名称的过滤器
  • 第一
  • CHANNEL_FILTER,
  • CONCURRENT_SESSION_FILTER,
  • SECURITY_CONTEXT_FILTER,
  • LOGOUT_FILTER,
  • X509_FILTER,
  • PRE_AUTH_FILTER,
  • CAS_FILTER,

有关详细信息,请参阅org.springframework.security.config.http.SecurityFilters的源代码。


但您也可以使用before

<security:custom-filter ref="myFiler" before="FORM_LOGIN_FILTER" />

答案 1 :(得分:3)

否 - 拦截器是Spring MVC的一部分,它始于DispatcherServlet。在servlet之前调用过滤器。

如果您想在UsernamePasswordAuthenticationFilter之前调用某些内容,则需要在该过滤器之前插入过滤器。