"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 사용자 정의 데이터베이스를 사용하기 위해 Spring Security에서 로그인 양식을 사용자 정의하는 방법.

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

2024-07-31에 게시됨
검색:802

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

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

사용자 정의 사용자 세부정보 서비스 생성:

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

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

스프링 보안 구성:

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

사용자 정의 UserDetailsService를 사용하도록 AuthenticationManager를 구성합니다.

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

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

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

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

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

다음은 구현 예입니다.

  1. 사용자 정의 사용자 세부정보 서비스 생성

공개 클래스 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. 스프링 보안 구성

@구성
@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. 사용자 정의 로그인 양식 구현

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




로그인


로그인




사용자 이름:



비밀번호:


로그인


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

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

이 단계를 따르면 사용자 인증을 위해 사용자 정의 데이터베이스를 사용하도록 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