[스프링부트JPA] 쇼핑몰 시큐리티 설정

JEONG SUJIN·2023년 1월 26일
0
  1. 스프링 시큐리티를 이용해 회원가입 및 로그인/회원가입 기능을 구현하는 방법
  2. 스프링 시큐리티를 이용해 회원의 역할에 따라서 페이지별 접근 권한을 부여하는 방법

스프링 시큐리티 소개

애플리케이션의 보안에서 중요한 두 가지 영역은 '인증'과 '인가'

웹에서 인증이란 해당리소스에 대해서 작업을 수행할 수 있는 주체인지 확인하는 것.

댓글을 달기 위해서는 로그인이라는 인증 절차를 거쳐야 한다.

1.스프링 시큐리티 설정 추가

security dependency 추가하기
스프링 시큐리티를 사용하기 위해서 pom.xmldp security와 관련된
의존성 추가

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-security</artifactId>
</dependency>

스프링 시큐리티를 추가하였다면 모든 요청은 인증을 필요로 한다.

서버를 시작하면 바로 로그인창으로 나오게 된다.

콘솔창에 스프링에서 제공하는 비밀번호를 제공한다.

아이디 : user
비밀번호 : 콘솔창에 나오는 비밀번호 입력

/logout 입력하면 로그아웃창도 스프링에서 제공한다.


이젠 회원가입기능을 만들건데

  • 인증이 필요없는 경우 : 상품상세페이지 조회
  • 인증이 필요한 경우 : 상품주문
  • 관리자 권한이 필요한 경우 : 상품등록

SecurityConfig 소스를 작성

@Configuration //빈 등록(Ioc관리)
@EnableWebSecurity
public class SecurityConfig  {

	@Bean
	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
		
		
		return http.build();
	}
	
    
    /*
	 * 비밀번호를 데이터베이스에 그대로 저장했을 경우, 데이터베이스가 해킹당하면 고객의 회원 정보가 그대로 노출 된다.
	 * 이를 해결하기 위해  BCryptPasswordEncoder의 해쉬 함수를 이용해 비밀번호를 암호화하여 저장
	 * BCryptPasswordEncoder를 빈으로 등록하여 사용
	 * */
	@Bean
	public PasswordEncoder passwordEncoder() {
		return new BCryptPasswordEncoder();
	}
	
}

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{}

기존에는 WebSecurityConfigurerAdapter를 상속받아 설정을 오버라이딩 하는 방식이었는데 더이상 지원하지 않아
상속받아 오버라이딩하지 않고 모두 Bean으로 등록한다.

profile
기록하기

0개의 댓글