J'ai un SimpleMappingExceptionResolver
pour rediriger chaque exception non gérée.
@Bean public SimpleMappingExceptionResolver exceptionResolver() {
SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
resolver.setDefaultErrorView("general-error");
resolver.setWarnLogCategory(TamponException.class.getName());
return resolver;
}
Dès que j'ai implémenté la sécurité de Spring, je me suis rendu compte que je devais exclure l'élément AccessDeniedException
:
resolver.setExcludedExceptions(AccessDeniedException.class);
Maintenant, j'implémente Spring Web Flow. SWF enveloppe les éléments essentiels AccessDeniedException
en FlowExecutionException
. Cette combinaison brise la sécurité de Spring, car les exceptions enveloppées sont désormais capturées par la fonction SimpleMappingExceptionResolver
. Je pourrais aussi exclure les FlowExecutionException
mais ce n'est pas ce que je veux.
Comment puis-je résoudre correctement ce problème ?
Ma prochaine idée serait d'implémenter un HandlerExceptionResolver
dont les délégués resolveException()
uniquement si l'exception non enveloppée n'est pas une AccessDeniedException
. Mais je me demande s'il n'existe pas quelque chose de prêt à l'emploi pour la combinaison SWF, Security et un HandlerExceptionResolver.