Se même valeur de hachage en utilisant BCryptPasswordEncoder
Je suis à l'aide de ressort de sécurité à l'aide de BCryptPasswordEncoder. Maintenant, pour changer de mot de passe ce que je dois faire est de comparer les Mot de passe fourni par l'utilisateur avec la valeur DB.
Mais depuis que le sel est généré dynamiquement par BCryptPasswordEncoder
, chaque fois que je reçois différentes valeur de hachage à partir de ci-dessous la méthode et pas nécessairement qu'il irait avec ma valeur en DB.
public static String encodePassword(String password) {
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String hashedPassword = passwordEncoder.encode(password);
return hashedPassword;
}
Quelle est la solution pour ce problème? puis-je identifier le sel utilisé pour ma DB et l'utilisation de la même sel dans la méthode ci-dessus ?
OriginalL'auteur mms | 2014-11-07
Vous devez vous connecter pour publier un commentaire.
Utiliser le
matches
méthode sur laPasswordEncoder
interface pour vérifier si le mot de passe est valide, plutôt que de l'encodage de nouveau, et la comparaison avec l'existant de hachage.OriginalL'auteur Shaun the Sheep
Si vous utilisez BCryptPasswordEncoder avec vos propres propriétés (résistance /aléatoire) avec Spring MVC, alors vous pouvez déclarer votre PasswordEncoder comme un Haricot. De cette manière, il sera une instance du singleton et vous pouvez le réutiliser.
Voici un exemple (je ne sais pas quelle configuration de style que vous utilisez):
dans votre configuration de sécurité:
Cependant, dans votre contrôleur, vous pouvez comparer les mots de passe comme ceci:
Oui, vous avez raison. J'ai mal compris. Cependant, l'utilisation d'un singleton PasswordEncoder est une bonne pratique si vous spécifiez les propriétés personnalisées.
J'ai corrigé ma réponse pour tenir compte de votre suggestion.
OriginalL'auteur Jonas