Spring SecurityContext retornando autenticação nula em páginas de erro

Estou tentando escrever uma página de erro personalizada para erros como 403 (acesso negado) e 500 (erro interno do servidor). Eles seriam renderizados a partir do modelo Velocity e teriam todas as mensagens traduzidas usando a localidade do usuário. A autenticação e a resolução de localidade funcionam bem no aplicativo.

Configurei o local no web.xml para ser a página desejada e no webmvc-context.xml adicionei o controlador de requet-to-view vi

O problema que encontrei é que SecurityContextHolder.getContext (). GetAuthentication () retorna nulo na visualização da página de erro. Olhando para o log que vi:

06.10 14:42:26 DEBUG - context.HttpSessionSecurityContextRepository(HttpSessionSecurityContextRepository.java:351) -  - SecurityContext stored to HttpSession: 'org.springframework.security.core.context.SecurityContextImpl@ece7b0b7: Authentication: ...
06.10 14:42:26 DEBUG - context.SecurityContextPersistenceFilter(SecurityContextPersistenceFilter.java:89) -  - SecurityContextHolder now cleared, as request processing completed
06.10 14:42:26 DEBUG - servlet.DispatcherServlet(DispatcherServlet.java:691) -  - DispatcherServlet with name 'foo' processing GET request for [/foo/app/error/403.html]

Então, o Spring ou o Tomcat redirecionam para uma página de erro e a solicitação gest é finalizada, assim o contexto é limpo. E a nova "solicitação" não passa pelos filtros do Spring Security, não restaurando o contexto.

A maneira usual não funciona, mas parece que as informações de autenticação estão em algum lugar da sessão, também porque AbstractTemplateView registra o seguinte:

Exposing session attribute 'SPRING_SECURITY_CONTEXT' with value [org.springframework.security.core.context.SecurityContextImpl@edfbd958: Authentication: org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken@edfbd958...

Como faço para obter corretamente as páginas normal e de erro agem da mesma form

questionAnswers(2)

yourAnswerToTheQuestion