본문 바로가기

생각정리/항해99

[주특기 프로젝트] 3일차

미니 프로젝트 진행


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