PROJECT

week2-1: Spring Security 비활성화 및 Swagger 적용, User 테이블 만들기

Terriermon 2025. 2. 24. 23:52

 

Spring Security 비활성화

//Spring Security 접근 전체 허용 및 로그인UI 비활성화
@Configuration
@EnableWebSecurity
class SecurityConfig {

    @Bean
    fun filterChain(http: HttpSecurity): SecurityFilterChain {
        http
            .csrf { it.disable() }
            .authorizeHttpRequests { authorize ->
                authorize.anyRequest().permitAll()
            }
            .formLogin { it.disable() }
            .httpBasic { it.disable() }

        return http.build()
    }
}

 

나중에 개발할 때 필요하지만 개발단계에서는 (아직) 거추장스러운 Spring Security

계속 로그인화면이 테스트를 막아서 비활성화 해줬다.

 

 

Swagger

@Configuration
class SwaggerConfig {

    @Bean
    fun openAPI(): OpenAPI = OpenAPI()
        .info(
            Info()
                .title("Sodamjae API")
                .description("소담재 API 문서")
                .version("v1.0.0")
        )
}

 

그리고 간단하게 스웨거도 적용했다.

http://localhost:8080/swagger-ui/index.html

 

 

테스트용 화면이지만 잘 뜬다.

 

 

이제 여기에 JWT 인증 버튼을 넣어주어서 Token을 받아 사용하도록 할거다. (나중에)

 

----

 

 

이대로 끝내기에는 아쉬워서 간단하게 User 테이블을 만들어보려고 한다.

 

회원가입에 요즘 필수로 들어가는 Oauth2 연동, 또는 이메일로 가입하는 경우에 대해서 생각했다.

Oauth2든 이메일로 가입하든 user는 하나의 테이블에서 관리되어야하며, email이 유니크값이 될 것이다.

그리고 사용자 맞춤 정보를 처음에 보여주기 위한 관심사, 나중에 확장을 위해서 초반에 받을 생각이다.

 

이를 바탕으로 만든 스키마는 아래와 같다.

 

 

users 테이블을 기반으로 ID를 키값으로 가진다.

email / password은 반드시 필요한 값이고, 그 외 사용자 정보들은 나중에 받을 예정.

 

CREATE TABLE users (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(255) UNIQUE,
    password VARCHAR(255) NULL,
    name VARCHAR(100) NOT NULL,
    nickname VARCHAR(100) NOT NULL UNIQUE,
    gender ENUM('M', 'F', 'O') NULL,
    birth_date DATE NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    created_by BIGINT NULL,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    updated_by BIGINT NULL
);

CREATE TABLE oauth_users (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT NOT NULL,
    provider ENUM('google', 'naver', 'kakao') NOT NULL,
    provider_id VARCHAR(255) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    created_by BIGINT NULL,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    updated_by BIGINT NULL,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

CREATE TABLE user_interests (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT NOT NULL,
    category VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    created_by BIGINT NULL,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    updated_by BIGINT NULL,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

 

생성완료.

반응형