사용자 정의 데이터베이스를 사용하도록 Spring Security의 로그인 양식을 사용자 정의하려면 다음 단계를 따르세요.
사용자 정의 UserDetailsService 만들기:
사용자 정의 데이터베이스에서 사용자 세부 정보를 로드하려면 UserDetailsService 인터페이스를 구현하세요.
loadUserByUsername 메소드를 재정의하여 데이터베이스에서 사용자 세부정보를 쿼리하세요.
Spring 보안 구성:
Spring Security 구성에서 UserDetailsService 빈을 정의하세요.
사용자 정의 UserDetailsService를 사용하도록 AuthenticationManager를 구성하세요.
로그인 페이지 URL과 로그인 처리 URL을 지정하여 로그인 양식을 사용자 정의하세요.
사용자 정의 로그인 양식 구현:
사용자 정의 로그인 양식을 위한 JSP 또는 HTML 파일을 만듭니다.
사용자 이름과 비밀번호에 대한 입력 필드와 제출 버튼을 포함합니다.
Spring Security 구성에 지정된 로그인 처리 URL을 사용하여 양식을 제출하세요.
다음은 구현 예입니다.
공용 클래스 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; }
}
@구성
@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(); }
}
src/main/webapp/WEB-INF/views 디렉터리(또는 이에 상응하는 위치)에 login.jsp(또는 login.html) 파일을 만듭니다.
8b05045a5be5764f313ed5b9168a17e6
이 예에서는 로그인 양식이 Spring Security 구성에 지정된 로그인 처리 URL인 /login URL에 제출됩니다.
이 단계를 따르면 사용자 인증을 위해 사용자 정의 데이터베이스를 사용하도록 Spring Security의 로그인 양식을 사용자 정의할 수 있습니다.
위 내용은 사용자 정의 데이터베이스를 사용하기 위해 Spring Security에서 로그인 양식을 사용자 정의하는 방법.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!