2014-10-09 4 views
0

Я создаю веб-приложение Spring MVC с механизмом входа пользователя. Я использовал весеннюю загрузку для настройки своего приложения. Для аутентификации пользователя с базой данных, я последовал следующий урок:Внедрить собственный метод проверки подлинности Spring Security

http://justinrodenbostel.com/2014/05/30/part-5-integrating-spring-security-with-spring-boot-web/

Здесь используется встроенная процедура аутентификации весны. По указанию

Весенняя проверка безопасности для таблицы пользователей и полномочий и аутентификация пользователя.

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

Как переопределить реализацию по умолчанию?

Кроме того, после того, как пользователь вошел в систему, как мне получить информацию о пользователе?

Спасибо!

+0

Есть много примеров этого, поиск UserDetailsService. – holmis83

+0

Посмотрите эту страницу, это может помочь вам понять, что нужно сделать, поскольку у нее есть достойный пример на этом http://igorristic.blogspot.com.au/2014/09/spring-mvc-and-security-basic-setup .html – Aeseir

ответ

1

Вы можете либо создать пользовательский номер AuthenticationProvider, либо использовать DaoAuthenticationProvider с вашей пользовательской реализацией UserDetailsService.

Ниже приведен пример класса конфигурации Spring Java для второго решения:

@Configuration 
@EnableWebMvcSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired 
    private UserService userService; 

    // ... 

    @Override 
    protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
     auth.authenticationProvider(authenticationProvider()); 
    } 

    @Bean 
    public AuthenticationProvider authenticationProvider() { 
     DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider(); 
     authenticationProvider.setPasswordEncoder(new ShaPasswordEncoder()); 
     authenticationProvider.setUserDetailsService(userService); 
     return authenticationProvider; 
    } 

} 

Вашей реализация UserDetailsService интерфейса будет содержать логику, относящуюся к области вашего проекта для получения пользователей по их имени пользователя.

Если вам нужны более подробные примеры, оставьте комментарий ниже, и я обновлю ответ, но это должно дать вам общую идею.

Также я рекомендую читать через JavaDocs вышеупомянутых классов Spring и интерфейсов.

+0

хороший ответ; только критик говорит о том, что MD5 и SHA не рекомендуются как функции хэширования, а скорее используют хеширование Blowfish (bCryptPasswordEncoder), потому что его можно адаптировать, поскольку вычислительная мощность становится дешевле (так легче взломать пароли). Подробности: https://codahale.com/how-to-safely-store-a-password/ –

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