>  기사  >  Java  >  사용자 정의 데이터베이스를 사용하기 위해 Spring Security에서 로그인 양식을 사용자 정의하는 방법.

사용자 정의 데이터베이스를 사용하기 위해 Spring Security에서 로그인 양식을 사용자 정의하는 방법.

WBOY
WBOY원래의
2024-07-16 13:00:54599검색

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

사용자 정의 데이터베이스를 사용하도록 Spring Security의 로그인 양식을 사용자 정의하려면 다음 단계를 따르세요.

사용자 정의 UserDetailsService 만들기:

사용자 정의 데이터베이스에서 사용자 세부 정보를 로드하려면 UserDetailsService 인터페이스를 구현하세요.

loadUserByUsername 메소드를 재정의하여 데이터베이스에서 사용자 세부정보를 쿼리하세요.

Spring 보안 구성:

Spring Security 구성에서 UserDetailsService 빈을 정의하세요.

사용자 정의 UserDetailsService를 사용하도록 AuthenticationManager를 구성하세요.

로그인 페이지 URL과 로그인 처리 URL을 지정하여 로그인 양식을 사용자 정의하세요.

사용자 정의 로그인 양식 구현:

사용자 정의 로그인 양식을 위한 JSP 또는 HTML 파일을 만듭니다.

사용자 이름과 비밀번호에 대한 입력 필드와 제출 버튼을 포함합니다.

Spring Security 구성에 지정된 로그인 처리 URL을 사용하여 양식을 제출하세요.

다음은 구현 예입니다.

  1. 사용자 정의 UserDetailsService 만들기

공용 클래스 CustomUserDetailsService는 UserDetailsService를 구현합니다. {
@오토와이어드
개인 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. 스프링 보안 구성

@구성
@EnableWebSecurity
공개 클래스 SecurityConfig는 WebSecurityConfigurerAdapter {
를 확장합니다. @오토와이어드
개인 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. 맞춤형 로그인 양식 구현

src/main/webapp/WEB-INF/views 디렉터리(또는 이에 상응하는 위치)에 login.jsp(또는 login.html) 파일을 만듭니다.

8b05045a5be5764f313ed5b9168a17e6


로그인


로그인




사용자 이름:



비밀번호:


로그인


사용자 이름 또는 비밀번호가 잘못되었습니다.
/c:if

이 예에서는 로그인 양식이 Spring Security 구성에 지정된 로그인 처리 URL인 /login URL에 제출됩니다.

이 단계를 따르면 사용자 인증을 위해 사용자 정의 데이터베이스를 사용하도록 Spring Security의 로그인 양식을 사용자 정의할 수 있습니다.

위 내용은 사용자 정의 데이터베이스를 사용하기 위해 Spring Security에서 로그인 양식을 사용자 정의하는 방법.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.