Como adicionar filtro personalizado após o usuário autorizar no aplicativo primavera

Eu sou um novato no Spring Security 3. Estou usando funções para os usuários fazerem login.

Eu quero adicionar algum valor de sessão depois que um usuário for autorizado no aplicativo. Talvez eu precise de algum filtro para que ele redirecione para o meu método, que adiciona algum valor de sessão. Eu configurei meu arquivo security.xml, mas não tenho certeza se estou fazendo as coisas certas. Qualquer exemplo nessa direção ajudaria. Qual classe de filtro devo usar? Como devo configurar o arquivo 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"/>

Meu método de classe de filtro eu preciso adicionar algum valor de sessão.

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

Eu modifiquei meu arquivo security.xml e o arquivo de classe

<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 cada URL. Existe alguma alternativa para chamar o método de filtro apenas uma vez quando um usuário é autenticado?

questionAnswers(2)

yourAnswerToTheQuestion