2015-02-05 4 views
0

Я зарегистрировал jdbcAuthentication(). Как я могу заменить пароль, который был нажат в инструкции SELECT?Как я могу изменить пароль в форме входа в систему перед тем, как использовать его для аутентификации весной?

Недостаточно A PasswordEncoder, так как я хочу объединить имя пользователя и пароль входящего запроса на вход, а затем передать эту строку и использовать исходящий хеш в качестве пароля для аутентификации с помощью JDBC.

@Autowired 
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    auth 
     .jdbcAuthentication() 
      .dataSource(datasource) 
      .usersByUsernameQuery("SELECT username, password, true as enabled " 
        + "FROM users WHERE username = ?") 
      .authoritiesByUsernameQuery("SELECT username, role as authority " 
        + "FROM users, roles " 
        + "WHERE username = ?"); 
    } 
} 

Я добавил обычай UsernamePasswordAuthenticationFilter но его метод attemptAuthentication() не дозвонились в попытке входа.

http.addFilterBefore(new CustomUsernamePasswordAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class); 
+0

Возможный дубликат http://stackoverflow.com/questions/22994851/how-to-register-saltsource-in-java-config-no-xml – holmis83

ответ

0

Если я понимаю правильно, ваш password поля в базе данных на самом деле хэш имени пользователя и пароля?

Как работает Spring Security, он сначала загружает объект UserDetails из базы данных на основе username. Затем он сравнивает пароль (после любой необходимой кодировки - например, соль и т. Д.) С предоставленным паролем (также после любой необходимой кодировки).

Для того, чтобы выполнить то, что вы хотите, я считаю, что вам нужно предоставить собственный класс «AuthenticationProvider object that would perform your method of authentication (because it's different than what the built in provider expects. The docs for [AuthenticationProvider are here][1]. You'll also need to modify either your XML or @ Configuration` для использования настраиваемого поставщика.

 Смежные вопросы

  • Нет связанных вопросов^_^