기존 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까지 적용을 해봐야겠다..