«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как настроить форму входа в Spring Security для использования пользовательской базы данных.

Как настроить форму входа в Spring Security для использования пользовательской базы данных.

Опубликовано 31 июля 2024 г.
Просматривать:819

How to customize the login form in Spring Security to use a custom database.

Чтобы настроить форму входа в Spring Security для использования пользовательской базы данных, вы можете выполнить следующие шаги:

Создайте пользовательский сервис UserDetailsService:

Реализуйте интерфейс UserDetailsService для загрузки сведений о пользователе из вашей пользовательской базы данных.

Переопределите метод loadUserByUsername, чтобы запросить информацию о пользователе в вашей базе данных.

Настройте Spring Security:

В конфигурации Spring Security определите bean-компонент UserDetailsService.

Настройте AuthenticationManager для использования вашей пользовательской службы UserDetailsService.

Настройте форму входа, указав URL-адрес страницы входа и URL-адрес обработки входа.

Реализация пользовательской формы входа:

Создайте файл JSP или HTML для пользовательской формы входа.

Добавьте поля ввода имени пользователя и пароля, а также кнопку отправки.

Для отправки формы используйте URL-адрес обработки входа, указанный в конфигурации Spring Security.

Вот пример реализации:

  1. Создание пользовательской службы UserDetailsService

публичный класс CustomUserDetailsService реализует UserDetailsService {
@Autowired
частный JdbcTemplate jdbcTemplate;

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    String query = "SELECT * FROM users WHERE username = ?";
    User user = jdbcTemplate.queryForObject(query, new Object[]{username}, new UserRowMapper());
    if (user == null) {
        throw new UsernameNotFoundException("User not found");
    }
    return user;
}

}

  1. Настройка безопасности Spring

@Конфигурация
@EnableWebSecurity
общедоступный класс SecurityConfig расширяет WebSecurityConfigurerAdapter {
@Autowired
частный CustomUserDetailsService customUserDetailsService;

@Autowired
private PasswordEncoder passwordEncoder;

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(customUserDetailsService)
        .passwordEncoder(passwordEncoder);
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
            .antMatchers("/login").permitAll()
            .anyRequest().authenticated()
        .and()
        .formLogin()
            .loginPage("/login")
            .loginProcessingUrl("/login")
            .defaultSuccessUrl("/welcome")
            .failureUrl("/login?error")
            .permitAll();
}

}

  1. Реализация пользовательской формы входа

Создайте файл login.jsp (или login.html) в каталоге src/main/webapp/WEB-INF/views (или в его эквиваленте):




Авторизоваться


Авторизоваться




Имя пользователя:



Пароль:


Авторизоваться


Неправильное имя пользователя или пароль.
/с:если

В этом примере форма входа отправляется по URL-адресу /login, который является URL-адресом обработки входа, указанным в конфигурации Spring Security.

Выполнив эти шаги, вы можете настроить форму входа в Spring Security для использования пользовательской базы данных для аутентификации пользователей.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/fullstackjava/how-to-customize-the-login-form-in-spring-security-to-use-a-custom-database-20mh?1Если есть какие-либо нарушение, пожалуйста, свяжитесь с [email protected], чтобы удалить
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3