Swagger와 Security 오류..

sanggyu·2023년 3월 14일
0

Spring

목록 보기
2/2

기존 JWT 구현해놨던 부분에서 SpringSecurity를 적용시키는 작업을 하였다..

    @Transactional
    public CommentResponseDto createComment
(Long id, CommentRequestDto commentRequestDto, HttpServletRequest request) {

        Board board = getBoard(id);
        User user = jwtUtil.getUserInfo(request);
        Comment comment = commentRepository.saveAndFlush(new Comment(commentRequestDto, user, board));

        return new CommentResponseDto(comment);
    }

기존 서비스단 코드에서

    @Transactional
    public CommentResponseDto createComment(Long id, CommentRequestDto commentRequestDto, User user) {

        Board board = getBoard(id);
        Comment comment = commentRepository.saveAndFlush(new Comment(commentRequestDto, user, board));

        return new CommentResponseDto(comment);
    }

이렇게 변경을 하였고 기존 컨트롤러는

    @PostMapping("/boards")
    public CommentResponseDto createBoard
    (@RequestBody CommentRequestDto requestDto, HttpServletRequest request){
        return commentService.createBoard(requestDto, request);
    @PostMapping("/comments/{id}")
    public CommentResponseDto createComment(@PathVariable Long id , @RequestBody CommentRequestDto commentRequestDto, @AuthenticationPrincipal UserDetailsImpl userDetails) {
        return commentService.createComment(id, commentRequestDto, userDetails.user());

이런식으로 변경을 하였는데 User 값에 null값이 들어와
에러는 해결하는데 4시간이 소요되었다,,

결국 문제를 찾긴했는데

@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {

    private static final String API_NAME = "Task Mng API";
    private static final String API_VERSION = "0.0.1";
    private static final String API_DESCRIPTION = "Task Mng API Description";


    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false) 기본 응답코드 표시
                .select()
              .apis(RequestHandlerSelectors.any()) //적용할 패키지명
               .paths(PathSelectors.any()) //패키지 하위에서 적용할 url path 지정
               .build();
   }

   @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
    }

Swagger와 WebSecurityConfig 와 충돌이 있었던 것 같다..
Swagger를 주석 처리하고 User 값을 불러와 해결을 했지만
Swagger를 아직 적용시키지 못했다..

Swagger를 한번 적용해보고 잊어먹고 있었던 나의 실수지만 Swagger에 접근하기까지 오랜 시간이 걸렸던 것 같다..

Swagger를 작동시키고 싶어서 여러방법을 찾아봤는데
버전다운 및 .antMatchers에 permitAll도 해보고 했는데
에러,,,,,,,,,,,,,,,,
포기하지 않고 Swagger까지 적용을 해봐야겠다..

0개의 댓글