미니 프로젝트 진행
Swagger 검증 적용
문제점 : 리프래쉬 토큰을 사용해서 검증 토큰을 스웨거에서 2개를 사용해야되는데 적용이 안됨.
해결 : SwaggerConfig에 어노테이션 추가를 해서 Authorize에 토큰을 추가 해주고 OpenAPI에 security를 추가해 메소드 전역에 적용을 시켜줄 수 있다.
@SecurityScheme(
type = SecuritySchemeType.APIKEY, in = SecuritySchemeIn.HEADER,
name = "Authorization", description = "Auth Token"
)
@SecurityScheme(
type = SecuritySchemeType.APIKEY, in = SecuritySchemeIn.HEADER,
name = "Authorization_Refresh", description = "Auth Refresh Token"
)
@Bean
public OpenAPI springShopOpenAPI() {
List<SecurityRequirement> securityRequirementList = new ArrayList<>();
securityRequirementList.add(new SecurityRequirement().addList("Authorization"));
securityRequirementList.add(new SecurityRequirement().addList("Authorization_Refresh"));
return new OpenAPI()
.info(new Info().title("FishingLoad API")
.version("v0.0.1")
.description("FishingLoad 프로젝트 API 명세서입니다."))
.security(securityRequirementList);
}
CORS 오류
문제점 : 프론트서버에서 백엔드서버에 정보 요청 시 정보 요청 불가
오류 코드 : Access to XMLHttpRequest at '서버 URL' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
해결 : CORS설정 추가 해서 해당 출처(URL)를 열어 주고 토큰도 추가 해준다.
@Bean
public CorsConfigurationSource configurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("http://localhost:3000")); // 출처 접근 허용
configuration.setAllowedMethods(Arrays.asList("GET", "POST")); // 허용 메소드
configuration.setAllowedHeaders(Arrays.asList("Authorization", "Authorization_Refresh", "Cache-Control", "Content-Type")); // 헤더에 접근 허용
configuration.setExposedHeaders(Arrays.asList("Authorization", "Authorization_Refresh")); // 헤더 사용 허용
configuration.setMaxAge(1800L); // 캐싱 허용 시간
configuration.setAllowCredentials(true); // 토큰 사용 여부
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration); // 허용 패스
return source;
}
필터 체인에서 cors 설정 추가
http.cors((cors) -> cors.configurationSource(configurationSource()));
'생각정리 > 항해99' 카테고리의 다른 글
[주특기 프로젝트] 5일차 (0) | 2023.09.21 |
---|---|
[주특기 프로젝트] 4일차 (0) | 2023.09.20 |
[Weekly I Learned]9월 3주차 (0) | 2023.09.18 |
[주특기 프로젝트] 2일차 (0) | 2023.09.17 |
[주특기 프로젝트] 1일차 (0) | 2023.09.15 |