Printemps de sécurité filtre personnalisé appelé plusieurs fois
J'ai une coutume de déconnexion du filtre appelé six fois. Deux fois dès que j'ai essayer d'accéder à l'application, deux fois quand j'ai entrer le nom d'utilisateur/mot de passe et cliquez sur "Connexion" puis deux fois encore, quand je clique sur "déconnexion".
Ce que je fais mal?
Configuration:
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN_FUNCTIONS')" />
<intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
<form-login login-page="/login"
authentication-success-handler-ref="customAuthenticationSuccessHandlerBean"
authentication-failure-handler-ref="customAuthenticationFailureHandlerBean" />
<logout invalidate-session="true" success-handler-ref="logoutHandlerBean" />
<session-management session-fixation-protection="migrateSession">
<concurrency-control max-sessions="1"
expired-url="/login_sessionexpired" />
</session-management>
<custom-filter before="LOGOUT_FILTER" ref="customLogoutFilter" />
</http>
<beans:bean id="customLogoutFilter" class="com.hurontg.libms.security.CustomLogoutFilter" />
Le filtre:
public class CustomLogoutFilter extends OncePerRequestFilter {
/**
*
*/
private XLogger logger = XLoggerFactory
.getXLogger(CustomLogoutFilter.class.getName());
@Override
protected void doFilterInternal(HttpServletRequest req,
HttpServletResponse res, FilterChain chain)
throws ServletException, IOException {
logger.error("========================================================================================");
logger.error("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Custom Logout Filter $$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
logger.error("========================================================================================");
chain.doFilter(req, res);
}
}
Printemps version: 4.1.1
Printemps de sécurité: 3.2.5
Vous devez vous connecter pour publier un commentaire.
Il est susceptible d'être appelé à d'autres URLs qui sont demandés. Par exemple, si vous avez des css, javascript, images qui sont chargés sur la page, elle sera appelée pour chacun de ceux-ci. Essayez d'ajouter un enregistrement à l'instruction qui affiche la valeur actuelle de demande d'informations pour savoir si c'est le cas. Par exemple,
Si vous utilisez Printemps Démarrage, tout GenericFilterBean (OncePerRequestFilter est un) dans le contexte sera automatiquement ajouté à la chaîne de filtrage. Sens la configuration ci-dessus aura le même filtre deux fois.
La méthode la plus simple solution consiste à définir un FilterRegistrationBean dans le contexte, et l'ai désactivé:
Partage juste mon cas 🙁
Je n'ai pas de réglage de
authentication.setAuthenticated(true)
dans le AuthenticationProvider.Donc,
AbstractPreAuthenticatedProcessingFilter
appeléauthenticate
une fois, puisAbstractSecurityInterceptor
a également été l'appel deauthenticateIfNeeded
.