회고

210302_TIL

코동이 2021. 3. 3. 01:49

* 어제의 다짐

 - Keys가 제공하는 hmacShaKeyFor , Keys.secretKeyFor 차이에 대해 살펴보기

=> 전자는 매개변수로 바이트를, 후자는 매개변수로 알고리즘과 길이를 넣는다. 주석을 통해서 대략적인 입력과 사용방법에 대해 알아봤으며 전반적인 메세지 인증개념을 공부하고 한번 더 보면 이해가 잘 될 것 같다.


 - JWT 토큰 이용해 회원가입 완료하기

=> JWT에 사용법과 토큰 생성에 대한 유효성만 체크하였다. 실제로 생성, 수정 시 적용하는 것은 못했다.


 - update의 요청과 응답 모두 Dto 전환하기 마무리

=> 완료


 - 한글로 커밋 메세지 작성하기

=> 한글로 커밋을 작성하니 훨씬 우리말이라 편했지만, 여전히 작성이 낯설었다. 제목은 명령형, 내용은 최대한 코드로 말하기보다는 상황에 대한 설명을 하도록 노력했다.

 

*오늘 한 일

- JWT를 header에 Authrization으로 요청하는 작업을 해보았다. 토큰이 정상적으로 있는 경우, 없는경우, 유효한 경우, 유효하지 않은 경우 모두를 테스트할 수 있어야 한다. 이전에는 content()만 사용했다면, 이번에는 header()를 추가한 것이다. 잘못된 입력에 대해서는 라이브러리 자체적으로 다양한 예외들을 발생시키고 있다. 메세지를 잘 읽어서 해당 내용들을 예외로 처리해주면 된다.

 

- 어느 layer에서 예외처리를 해주는지는 프로그래머에 따라 다르다. 에러처리에 대한 경험을 더 익혔다.

Controller -> Service -> Util의 순서로 의존이 되어있을 때, 어느 곳에 해주든지 상관 없다. Service에서 해줄 수도 있고 Util에서 해줄 수도 있다. Util에서 예외를 처리한다면, 굳이 Service에서 검사하지 않아도 될 것이다. (엄밀하게 하려면 Service에서 검사해도 된다. 하지만, 그렇다고 꼭 해야하는 것도 아니다) 예외는 throw new를 통해서 발생시킬 수도 있으며, 그 밖에서 try - catch로 감싸서 해결할 수도 있다. 

 

- 예외의 커스텀으로 처리도 고려해볼만 하다. try -catch에서 catch안에 라이브러리가 제공하는 에러를 받았다면, 이후에 내가 커스텀으로 만든 예외를 던저서 처리할 수도 있다.

try {
           ...
        } catch (SignatureException e) {
            throw new InvalidAccessTokenException(accessToken);
        }

jwt와 관련한 로직 중에 SignatureException를 발생시키는 경우, 다시 그것을 InvalidAccessTokenException으로 받을 수 있다. 이와 같이, 상황에 따라서 적절하게 예외에대한 처리를 해줄 수 있다.

 

- 생성자에서 빈이 주입되지 않는 문제를 해결하였다. Dozer Mapper 생성자 주입 시, bean을 제대로 찾지 못해서 전역설정에서 만들어주어서 사용하도록 했다. ( escapefromcoding.tistory.com/253 )

*내일 할 일

- JWT 개념 학습 및 실습 해보기

- JWT 작동을 전제로 Create, Update에서 구현해보기

- java key에 대한 함수들 좀 더 자세히 확인하기

- 이전과제와 새로운 과제 합치기

 

반응형