ssung_항해일지/항해99_Spring_입문, 숙련, 심화

spring - 21일차

ssungcohol 2023. 2. 25. 01:15

미니 프로젝트 시작

 

프로젝트 기능 중 오늘 우리 팀의 목표는 회원가입, 로그인 창 구현이었다.

그 중에서 내가 맡은 부분은 회원가입 로직 구현

 

회원 가입 부분을 적용한 뒤 다른 팀원이 스프링 시큐리티를 적용하여 코드를 합친 후 테스트 진행 중

프로그램이 정상 작동 되고, 포스트맨에서 테스트 진행 시 회원가입과 로그인 진행되지 않았고 컨트롤러 자체가 작동하지 않았다.

 

원인은 시큐리티 부분에서 filter 부분의 문제였던 것!

String token = jwtUtil.resolveToken(request);

if (token != null){
    if (!jwtUtil.validateToken(token)){

    }
    Claims info = jwtUtil.getUserInfoFromToken(token);
    setAuthentication(info.getSubject());
}
filterChain.doFilter(request,response);

팀원 분이 말씀해주시길 위의 코드에서 두번째 if 문에 내용이 없어서 진행이 안되었던 것이었다.

회원가입이나 로그인 요청이 들어오면 시큐리티에서 FilterChain 이 부분에서 한 번 검증을 거친 후 컨트롤러로 보내면서 비지니스 로직이 이루어지는데 해당 부분에 구현부분이 비어있어서 컨트롤러까지 작동이 불가능 했던 것!

String token = jwtUtil.resolveToken(request);

if (token != null){
    if (!jwtUtil.validateToken(token)){
        jwtExceptionHandler(response,"Token Error", HttpStatus.UNAUTHORIZED.value());
        return;
    }
    Claims info = jwtUtil.getUserInfoFromToken(token);
    setAuthentication(info.getSubject());
}
filterChain.doFilter(request,response);

아래의 코드로 변경해주었더니, 정상작동!

시큐리티 부분에 대해 아직 공부를 진행하지 않아서 원인을 파악하는데 도움이 되지는 못했지만, FilterChain의 역할을 어느정도는 가늠? 할 수 있었다. 시큐리티 공부도 서둘러서 병행해봐야겠다.


두번째 문제는 로그인 기능에서 나타났다.

우선, 문제의 코드를 보면

@PostMapping("/login")
public StateDto login(@RequestBody LoginRequestDto request, HttpServletResponse response) {
    return memberService.login(request, response);
}

해당 코드인데, 아무런 문제가 없어 보였지만 포스트맨으로 테스트를 진행하면

"Request method 'GET' not supported" 해당 에러와 함께 405 코드가 발생했다.

 

원인은 작성 된 POST 방식이 지원되지 않는다는 오류였는데, 기존 다른 프로그램에서는 정상 작동되었던 코드였고 변한것이 없었는데 method가 POST가 아닌 GET을 요청하고 있었다.

 

그래서 GETMapping 방식으로 진행하였더니 정상작동을 하였는데, 또 다른 해결 방법으로는 api 주소를

/longin 이 아닌, /login/ 으로 요청을 보내면 또 정상작동이 되었다...

 

원인을 모르겠다.. 조금 더 찾아봐야겠지만 요청된 api 가 잘못 되었거나, 어디서인가 우리의 실수가 발생했던 것 같다..

728x90

'ssung_항해일지 > 항해99_Spring_입문, 숙련, 심화' 카테고리의 다른 글

spring - 28일차  (0) 2023.03.04
spring - 27일차  (0) 2023.03.03
spring - 20일차  (0) 2023.02.24
spring - 19일차  (0) 2023.02.22
spring - 18일차  (0) 2023.02.21