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
);
생성완료.
반응형