Spring Security, Как мне получить имя пользователя, пытающегося войти в систему?

У меня есть этот класс:

public class CustomPasswordEncoder implements PasswordEncoder {

@Autowired 
private JdbcTemplate jdbcTemplate;

@Inject
private PasswordEncoder passwordEncoder;

public String encode(CharSequence rawPassword) {

    String hashedPass;
    String userLogin;
    String encryptedPassword;

    sql = "select PasswordHash('?','?') from dual";

    hashedPass = (String)getJdbcTemplate().queryForObject(
        sql, new Object[] { userLogin,rawPassword }, String.class);

    encryptedPassword = passwordEncoder.encode(hashedPass);

    return encryptedPassword;
 }
}

Что мне нужно сделать, это получить имя пользователя из формы и иметь его в переменной userLogin. Я нахожу довольно трудным получить имя пользователя из формы в этот настроенный PasswordEncoder

 M. Deinum01 июл. 2016 г., 15:55
Тогда не используйте кодировщик, а реализуйте свой собственныйAuthenticationProvider который дает вам доступ ко всему этому.
 futureExpert01 июл. 2016 г., 18:37
Я буду следовать этому маршруту и ​​посмотрю, что произойдет. Благодарю вас!
 futureExpert01 июл. 2016 г., 15:23
Если вы посмотрите на код, то увидите, что мне нужно имя пользователя, чтобы передать его через алгоритм хеширования в функции, расположенной в базе данных oracle, чтобы получить пользовательский хеш. Мне нужно имя пользователя, потому что я использую устаревшую систему, которая требует этого для хешированных паролей. Таким образом, мне нужно создать свой собственный кодер, чтобы сообщить Spring, чтобы он сравнивал хешированный пароль пользователя в базе данных с попыткой входа в систему.
 M. Deinum01 июл. 2016 г., 08:11
Кодированный пароль предназначен для кодирования паролей ... Почему вы пытаетесь получить запись на основе простого пароля и имени пользователя в декодированном виде. Это в основном то, что вы не должны делать в первую очередь, а не вообще в кодировщике.

Ответы на вопрос(0)

Ваш ответ на вопрос