PostCategoryAbout Me

WIL - week36

(1) WIL week36

  • convenience-tools
    • oauth2 with google login
  • 현재 회사에서 맡고있는 피쳐 refactoring 계획

(2) 이번주 한 일

  • 현재 회사에서 맡고있는 피쳐가 어느정도 안정화(?)가 되어서 다음 피쳐개발이 계획되었다. 사실 새로운 피쳐를 개발한다기 보다는 기존것을 유저들을 위해서 사용성 높고 편하게 바꿔가는 개발을 많이 하게 될 것 같다. 지금 담당하고 있는 파트의 리팩토링은 저번주에 같이 담당하고있는 선임개발자분과 어떤식으로 리팩토링을 진행할지 계획을 만들었고 아마 월요일에 계획이 다 만들어지는대로 바로 리팩토링을 시작할 것 같다. 엄청 험난한 대장정이 예상되지만 그만큼 배우는것도 많고 좋은 경험이 될 것으로 예상된다 !
  • Convenience-tools
    • 해야지 해야지 하면서 미뤄두었던 로그인관련 기능 개발을 진행했다. google oauth2를 사용해서 개발했고 엄청 다사다난했다.. 일단 계속해서 계획이 변경되고 바꾸면서 하다보니까 엄청 뇌정지가 많이왔다. 계속 지웠다 다시 만들고 "아 이건 아닌데?"싶으면 또 다시 지우고 만들고 반복했었다. 가장큰 이유는 우선 로그인을하고 상태를 유지하는건 솔직히 크게 어렵지않았다. 하지만 여기까지만 개발하면 다시 웹앱에 접속했을때 로그인 유지가 안된다는 문제점이 있고 다시 로그인 해야하는 불편함을 해소하고 싶었다. 그리고 제일 크게 바꾼 부분은 클라이언트에서 google oauth 로그인을 처리하는게 과연 맞을까? 라는 고민이 들어서 모두다 server에서 처리할수 있도록 변경하도록 계획을 다시 모두 수정했었던 부분이였다. 역시 바꾸길 잘했다는 생각이들었다.
    • 우선 어떤식으로 구현할지 처음부터 다시 노트에 정리하면서 계획했었다. 순서를 나열해보자면 다음과 같이 진행했다.
        1. client에서 로그인 페이지 접근
        1. server에 google login url주소를 요청
        1. 로그인 버튼 클릭시 해당 url로 로그인하러 이동
        1. 로그인 완료후 callback페이지 접근후 서버에서 로그인이 성공하면 회원정보를 db에 저장
        1. server에서 user email을 받아와서 localStorage에 저장
        1. 클라이언트에서는 callback페이지에서 바로 main페이지로 이동
    • 로그인 자체에 대한 기능은 우선 이정도로 구현했다. 그럼 로그인 상태유지 및 token인증은 어떤식으로 했는지 나열해보겠다.
        1. user가 다른 페이지를 이동하며 server에 요청을 보낼때 localStorage에 담은 user email을 서버로 전송
        1. server에서 email로 db에서 user정보를 조회후 access-token을 꺼내와서 google-oauth2에 검증 요청
        1. 검증이 완료되면 true 반환
        1. 마찬가지로 접속 종료후 다시 접속시 위와 같은 방법으로 서버에 유저의 token을 검증시킨후 맞다면 로그인 상태가 계속 유지되도록 가능하게 구현했다.
    • 추가로 이제 access-token의 검증이 실패시 refresh-token으로 새로 요청후 담아서 저장하고 하는 방식으로 계속된 로그인 유지가 가능하도록할 계획이다. 하지만 여기서 걸리는 부분은 매번 서버에 google-oauth2에 검증을 요청하게되는데 혹시 api limit이 걸릴수도 있지않을까해서 관련된 공식문서들을 살펴보았는데 찾지는 못했다. 추후에 이런 문제가 생길걸 대비해서 다른 구현방법도 미리 준비해놓도록 해야할 것 같다.

(3) 느낀점

  • 선임개발자분과 리팩토링 과정을 계획하면서 어떤 부분들을 고려해야하고 생각하면서 다시 설계해야하는지를 많이 배우고있다. 생각하지 못했던 부분들도 엄청 많았고 이런 디테일도 꼭 필요하겠구나 싶은 포인트들도 많이있었다. 좋은 곳에서 좋은분들과 함께 일할수있는게 더욱더 감사한 요즘이다 ㅎㅎ!

  • 개인 프로젝트를 진행하면서 굉장히 많이 공부가 되고있는것같다. 생각보다 로그인과 관련된 작업은 엄청나게 손이 많이가고 고려하고 생각해야할 부분이 많은것같다. 단순하게 jwt토큰만 사용하고 localStorage나 Cookie에 값이나 토큰을 담아두고 사용하고 하는 방식으로 구현했다면 금방했을수 있었겠지만 로그인 상태를 유지하고 토큰을 계속해서 검증하고 보안적으로도 괜찮은 구현을 해보고싶어서 google oauth2도 사용해서 관련 문서도 읽어보고 어떤식으로 처리할지를 계획했던게 쉽지 않았던것 같다. 하지만 덕분에 알게된 사실도많고 공부한 내용도 많아서 좋았다 !

(4) 다음주 계획

  • convenience-tools
    • client 로그인 상태에 따라서 각 페이지별로 어떤 스코프로 보여줄지 계획후에 개발
    • server는 우선 가계부보다 시간이 된다면 blog쪽 관련된 개발을 먼저 진행할 것 같다.
  • TypeScript 책 읽기

(5) Convenience-tools

  • https://github.com/dltmdrbtjd/Convenience-Tools