2011-02-04 3 views
3

J'utilise la sécurité de printemps. J'utilise aspectj pour enregistrer un faux nom d'utilisateur ou mot de passe. J'ai été capable d'intercepter un nom d'utilisateur incorrect en vérifiant loadUserByUsername pour une exception. Comment intercepter un mot de passe incorrectprintemps sécurité intercepter mauvais mot de passe

On dirait Spring obtient l'objet utilisateur et vérifier le mot de passe entré contre le mot de passe de l'utilisateur. Comment puis-je intercepter cette exception pour toute

Merci à l'avance

Répondre

2

Je n'ai pas beaucoup d'idée sur les aspects de sorte que ce peut n'aide pas. Tout d'abord, vous devez vous demander, avez-vous vraiment besoin de faire la distinction entre un mauvais nom d'utilisateur et un mauvais mot de passe - surtout si cette information est retournée à l'utilisateur. Par défaut, spring-security n'encourage pas cela, c'est pourquoi par défaut il renvoie BadCredentialsException dans les deux cas.

sécurité Spring 3.0.x fournit une méthode publicauthenticate() (dans AbstractUserDetailsAuthenticationProvider classe) qui récupère d'abord l'utilisateur dans la méthode et fait ensuite la validation de mot de passe dans la méthode protectedadditionalAuthenticationChecks()protectedretrieveUser().

En définissant la propriété hideUserNotFoundExceptions-false (il est true par défaut), méthode authenticate() peut être vérifié pour UserNotFoundException (en cas de mauvais utilisateur) et BadCredentialsException en cas de mauvais mot de passe.

0

Habituellement, vous utilisez ExceptionTranslationFilter et FilterSecurityInterceptor pour gérer tous les échecs d'authentification. Vous pouvez passer en revue la page The Security Filter Chain et ajouter quelques éclaircissements à votre question si cela ne vous donne pas ce dont vous avez besoin.

+0

pouvez-vous m'aider avec un échantillon de code. Pour tisser un aspect, je dois fournir une méthode qui doit être vérifiée. Étant nouveau à la sécurité de printemps, pas sûr, quelle classe à étendre et quelle méthode pour vérifier si le mot de passe est incorrect. – user373201

Questions connexes