Spring Security에서 로그인 양식을 사용자 정의하여 사용자 정의 데이터베이스를 사용하려면 다음 단계를 따르세요.
사용자 정의 사용자 세부정보 서비스 생성:
사용자 정의 데이터베이스에서 사용자 세부 정보를 로드하려면 UserDetailsService 인터페이스를 구현하세요.
loadUserByUsername 메소드를 재정의하여 데이터베이스에서 사용자 세부정보를 쿼리하세요.
스프링 보안 구성:
Spring Security 구성에서 UserDetailsService 빈을 정의하세요.
사용자 정의 UserDetailsService를 사용하도록 AuthenticationManager를 구성합니다.
로그인 페이지 URL과 로그인 처리 URL을 지정하여 로그인 양식을 사용자 정의하세요.
사용자 정의 로그인 양식 구현:
사용자 정의 로그인 양식을 위한 JSP 또는 HTML 파일을 생성합니다.
사용자 이름과 비밀번호에 대한 입력 필드와 제출 버튼을 포함합니다.
Spring Security 구성에 지정된 로그인 처리 URL을 사용하여 양식을 제출하세요.
다음은 구현 예입니다.
공개 클래스 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; }
}
@구성
@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(); }
}
src/main/webapp/WEB-INF/views 디렉터리(또는 이에 상응하는 위치)에 login.jsp(또는 login.html) 파일을 만듭니다.
이 예제에서는 로그인 양식이 Spring Security 구성에 지정된 로그인 처리 URL인 /login URL에 제출됩니다.
이 단계를 따르면 사용자 인증을 위해 사용자 정의 데이터베이스를 사용하도록 Spring Security의 로그인 양식을 사용자 정의할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3