Cómo agregar un filtro personalizado después de que el usuario autorice en la aplicación Spring

Soy un novato en Spring Security 3. Estoy usando roles para que los usuarios inicien sesión.

Quiero agregar algo de valor de sesión después de que un usuario esté autorizado en la aplicación. Tal vez necesito algún filtro para que redirija a mi método, lo que agrega algún valor de sesión. He configurado mi archivo security.xml pero no estoy seguro de si estoy haciendo las cosas bien. Cualquier ejemplo en esa dirección ayudaría. ¿Qué clase de filtro debo usar? ¿Cómo debo configurar el archivo security.xml?

<custom-filter ref="authenticationFilter" after="FORM_LOGIN_FILTER "/>

<beans:bean id="authenticationFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter">
    <beans:property name="filterProcessesUrl" value="/j_spring_security_check" />
    <beans:property name="authenticationManager" ref="authenticationManager" />
    <beans:property name="authenticationSuccessHandler" ref="successHandler" />
</beans:bean> 

<beans:bean id="successHandler" class="org.dfci.sparks.datarequest.security.CustomAuthorizationFilter"/>

Mi método de clase de filtro Necesito agregar algún valor de sesión.

public class CustomAuthorizationFilter implements AuthenticationSuccessHandler {

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request,
            HttpServletResponse response, Authentication authentication)
            throws IOException, ServletException {
        Set<String> roles = AuthorityUtils.authorityListToSet(authentication
                .getAuthorities());
        if (roles.contains("ROLE_USER")) {
            request.getSession().setAttribute("myVale", "myvalue");
        }
    }
}

Editar código

He modificado mi archivo security.xml y mi archivo de clase

<custom-filter ref="authenticationFilter" after="FORM_LOGIN_FILTER "/>  
public class CustomAuthorizationFilter extends GenericFilterBean {

    /*
     * ServletRequestAttributes attr = (ServletRequestAttributes)
     * RequestContextHolder.currentRequestAttributes(); HttpSession
     * session=attr.getRequest().getSession(true);
     */
    @Autowired
    private UserService userService;

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {

        try {
            chain.doFilter(request, response);

                    HttpServletRequest req = (HttpServletRequest) request;
                    HttpSession session = req.getSession(true);
                    Authentication authentication = SecurityContextHolder
                            .getContext().getAuthentication();
                    Set<String> roles = AuthorityUtils
                            .authorityListToSet(authentication.getAuthorities());
                    User user = null;                   
                        if (true) {
                            session.setAttribute("Flag", "Y");
                        } 
            }

        } catch (IOException ex) {
            throw ex;
        }
    }

}

Que invoca todas y cada una de las URL. ¿Existe alguna alternativa al método de filtro de llamada solo una vez cuando un usuario se autentica?

Respuestas a la pregunta(2)

Su respuesta a la pregunta