11. 사용자 테이블 이용한 인증/인가 처리

책의 11. 사용자 테이블 이용한 인증/인가 처리

SecurityConfig.java

10. JDBC 이용한 인증/인가 처리 와 같음

 

AuthenticationConfig.java

package com.mysite.config;

import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration
public class AuthenticationConfig {

	@Autowired
	DataSource dataSource;

	@Autowired
	public void configGlobal(AuthenticationManagerBuilder auth) throws Exception {
		String query1 = "SELECT user_id, user_pw, enabled FROM member WHERE user_id=?";
		String query2 = "SELECT b.user_id, a.auth FROM member_auth a, member b WHERE a.user_no=b.user_no AND b.user_id=?";

		auth.jdbcAuthentication()
				// 데이터 소스를 지정한다.
				.dataSource(dataSource)
				// 작성한 쿼리를 지정한다.
				.usersByUsernameQuery(query1)
				.authoritiesByUsernameQuery(query2)
				// BCryptPasswordEncoder 비밀번호 암호화 처리기를 지정한다.
				.passwordEncoder(passwordEncoder());
	}

	//  스프링 시큐리티에서 제공되는 BCryptPasswordEncoder 클래스를 빈으로 등록한다.
	@Bean
	public PasswordEncoder passwordEncoder() {
		return new BCryptPasswordEncoder();
	}

}
반응형

댓글()