JAVA/Spring Boot

[ Spring boot / JAVA ] 쇼핑몰을 만들어보자 (1) - Spring Security

menus 2024. 3. 2. 23:59
728x90

 

 

 

안녕하세요 !      😊

 

 

[ Spring boot / JAVA ] 스프링 부트 - Controller(2) 회원가입 기능 구현

안녕하세요 ! (●'◡'●) [ Spring boot / JAVA ] 스프링 부트 - Controller(1) 안녕하세요 ! (. ❛ ᴗ ❛.) 이번 글에서는 스프링 부트로 데이터를 주고받는 방법을 알아보도록 하겠습니다. 스프링 부트 초기

preparingforme-n-us.tistory.com

 

지난 글에서 회원가입을 구현해봤는데, 이번 글에서는 쇼핑몰을 제작해보도록 하겠습니다 !

 

 


현재 작업된 내용

 

로그인 페이지와 홈페이지를 작성해두었고, 쇼핑몰을 만들어볼거기 때문에 홈페이지에서 상품 등록 페이지로 넘어갈 수 있도록 해두었습니다.

 

이때, 아무나 상품을 등록하게 허용하면 안되겠죠?

 

그래서 spring security를 사용해서 사용자가 로그인을 안했을 때 접근 제한을 걸어주겠습니다 !

 

( spring boot - 3.2.3을 기준으로 작성되었습니다  ! )

 

로그인(인증)을 안했을 경우 허용할 페이지, 로그인이 안되어있을 경우 인증이 필요한 페이지에 접속하면 이동할 페이지, 인증이 성공했을 경우 이동할 페이지를 설정해줘야할 것 같습니다.

 

SecurityConfig.java를 만든 뒤 @Configuration 을 작성해주겠습니다.

 

@EnableWebSecurity 를 추가하여 스프링 시큐리티 필터 체인을 만들고 웹 보안을 활성화합니다.

 

 

SecurityConfig.java

@Configuration
@EnableWebSecurity
public class SpringSecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(request -> request
                    .dispatcherTypeMatchers(DispatcherType.FORWARD).permitAll()
                    .requestMatchers("/shoplogin", "/signup", "/home").permitAll() // 로그인, 회원가입, 홈페이지는 아무나 접속 가능
                    .anyRequest().authenticated()	// 설정 이외 페이지 인증 요청
            )
            .formLogin(login -> login
                    .loginPage("/shoplogin")
                    .loginProcessingUrl("/api/login")
                    .usernameParameter("memberId")
                    .passwordParameter("password")
                    .defaultSuccessUrl("/home", true)	// 성공 시 home page로 이동
                    .permitAll()	
            )
            .logout(withDefaults());

        return http.build();
    }
}

 

 

 

이렇게 해서 spring security에서 제공해주는 login 페이지를 사용하는 대신 직접 만들어둔 페이지를 사용하도록 설정했습니다.

 

또한, login이 성공했을 경우 home 페이지로 이동할 수 있도록 했습니다.

 

사용자가 로그인을 안했을 경우 회원가입과 로그인, 홈페이지만 이용할 수 있고, 나머지 요청

 

로그인을 안한 상태로 다른 url을 요청하면 login 페이지로 이동하게 만들어두었습니다.

 

근데 여기까지하면 DB랑 연결되지 않은 상태라서 임시 비밀번호를 쳐야 로그인이 되는 상태일겁니다.

 

다음 글에서 spring security에 대한 내용들과 DB 연결하는 부분을 이어서 설명하고

 

이번 글은 여기서 마무리 하도록 하겠습니다 !

 

감사합니다.