Загрузка UserDetails по имени пользователя и паролю в весенней безопасности? - PullRequest
1 голос
/ 01 сентября 2011

Я довольно новичок в Spring Security и столкнулся с проблемой, надеюсь, кто-то здесь поможет:

DaoAuthenticationProvider извлекает пользователя ТОЛЬКО по имени пользователя (когда вы реализуете UserDetailsService.loadUserByUsername (String username), но моя проблема заключается в том, что наш пароль хэшируется в БД с помощью функции БД, то есть, если я получаю по имени пользователя, он не будет совпадать с предоставленным паролем, поскольку то, что я получаю из БД, является хешированной версией.

Как мне реализовать решение в Spring Security, где я могу сопоставить имя пользователя и пароль на стороне БД, прежде чем я получу объект User и помечу пользователя как аутентифицированного?

Что-то вроде UserDetailsService.loadUserByUsernameAndPassword (String username, String password) - это то, что я ищу.

У меня такое чувство, что мне придется готовить свою собственную реализацию, так как я где-то читал, что Spring Security никогда не отправляет пароль в БД. Если я это сделаю, кто-нибудь, пожалуйста, укажите мне правильное направление, как начать?

Любая помощь будет высоко ценится. Спасибо!

1 Ответ

2 голосов
/ 18 декабря 2011

Вы можете написать UserDetailsServiceImpl extends org.springframework.security.core.userdetails.UserDetailsService

переопределить метод loadbyusername(). Читайте пользователя из БД. У вашего пользователя будет хешированный пароль ..

На экране входа в систему выполните аутентификацию пользователя как login(username, hash(password)) ..

они будут совпадать ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...