본문 바로가기
부트캠프 개발일기/Main-Project

98일차: Main-Project Day 5 (회원가입, 로그인)

by shyun00 2023. 7. 4.

오전까지 프로젝트 설계 및 개발환경 세팅을 마무리하고 각자 맡은 부분 구현에 들어갔다.

이전 프리프로젝트에서 작성했던 것과 거의 유사한 코드였으나 버전세팅이나 필드명이 바뀌면서 몇가지 오류가 발생했다.

 

1. Spring Security 자동 구성 비활성화

코드 작성에 앞서, Spring Security 의존성을 추가해두었으나 인증 부분을 구현하지 않은경우 다른 코드를 작성하고 테스트할 때 인증으로 인해 결과를 확인하기 어려울 수 있다.

이때 간단하게 Security 자동 구성 기능을 꺼두는 방법이 있다.

 

아래와 같이 애플리케이션에서 exclude = SecurityAutoConfiguration.class을 추가하면 된다.

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

 

2. Consider defining a bean of type '~~.HttpSecurity' in your configuration. 

프리프로젝트때와 거의 유사한 코드였음에도 불구하고 에러가 발생했다. 그 이유는 1번에서 추가한 내용때문이었다.

1번에서 Security 자동 구성 기능을 비활성화한 경우 SecurityConfiguration에 @EnableWebSecurity 애너테이션을 붙여야한다.

자동 구성이 비활성화 되어있으므로 @EnableWebSecurity 애너테이션을 붙여 해당 클래스를 기준으로 웹 보안 설정을 활성화해야한다.

 

3. StackOverflowError

말로만 들었지 실제로는 처음 겪어보는 오류였다.

인증 과정에서 필요한 UserDetails를 가져오는 과정에서 발생한 오류인데, UserDetails를 구현한 클래스에서

getPassword() 메서드를 잘못 오버라이드하여 발생한 문제였다.

지난 프로젝트의 경우 비밀번호 필드명이 pwd 였기때문에 getPwd()를 호출하여 문제가 없었으나

이번 프로젝트는 비밀번호 필드명이 password 여서 getPassword() 안에서 getPassword()를 호출하는 형태가 되어버렸다.

이 부분을 수정하고 정상적으로 작동하는 것을 확인할 수 있었다.

 

[결과 확인]

회원가입 요청 - 응답이 이루어지고 있다.
DB에도 회원 정보가 잘 등록되어있다.
로그인 요청시 토큰을 정상적으로 발행하고있다.

오늘은 입력받은 정보를 통한 회원가입, 로그인 부분을 작성했다.

내일은 OAuth2.0을 통한 회원가입, 로그인 부분을 작성할 계획이다.

 

참고자료

[Spring] Spring Security 기능을 제거하는 간단한 방법

Spring Boot Security Auto-Configuration