Cómo escribir un filtro personalizado en spring de seguridad?

Deseo recibir cierta información por solicitud, por lo que creo que en lugar de tener una función para cada solicitud y obtener esa información de las solicitudes por separado, es mejor tener un filtro.
Entonces, cada solicitud pasará ese filtro y yo obtendré lo que quiero.

La pregunta es: ¿cómo puedo escribir un filtro personalizado?
Supongamos que no es como cualquier filtro de seguridad de spring predefinido y es totalmente nuevo.

Puede usar el filtro estándar de Java. Simplemente colóquelo después del filtro de autenticación en web.xml (esto significa que irá más adelante en la cadena de filtros y se llamará después de la cadena de filtros de seguridad).

public class CustomFilter implements Filter{ @Override public void destroy() { // Do nothing } @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Set roles = AuthorityUtils.authorityListToSet(authentication.getAuthorities()); if (roles.contains("ROLE_USER")) { request.getSession().setAttribute("myVale", "myvalue"); } chain.doFilter(req, res); } @Override public void init(FilterConfig arg0) throws ServletException { // Do nothing } } 

Fragmento de web.xml:

   springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy   springSecurityFilterChain /*    customFilter com.yourcompany.test.CustomFilter   customFilter /VacationsManager.jsp  

También puede agregar el controlador que se invocará después de iniciar sesión correctamente (debe extender SavedRequestAwareAuthenticationSuccessHandler ). Mira aquí cómo hacer esto. Y creo que esta es una idea aún mejor.


ACTUALIZADO:
O puede tener este filtro al final de sus filtros de seguridad como este:

     

Y para tener su filtro, puede usar esto:

 public class MonitoringFilter extends GenericFilterBean{ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //Implement this Function to have your filter working } 

Solo lanzando esto en la mezcla; ¿Qué hay de usar custom-filter dentro del elemento http :

  ...