authenticationinterceptor

의존성 역전을 통한 독립적인 네트워크 모듈 설계하기
최근 프로젝트를 진행하며 독립적인 네트워크 모듈을 직접 설계하며, 아래와 같은 목표를 세웠습니다.네트워크 관련 서드파티 라이브러리는 네트워크 모듈 내에서만 알도록 할 것모듈 외부에선 NetworkService만 알도록 할 것토큰 리프레쉬 로직과 같이 인증 관련 세부 구현은 숨길 것이를 위해 NetworkService 내부에서 Alamofire의 AuthenticationInterceptor 를 활용하여 인증을 처리하고 있었습니다.이렇게 설계하면 사용하는 쪽에선 인증 로직을 신경쓰지 않아도 되게 됩니다.401 인증 에러 응답을 받으면 Alamofire가 Authenticator.refresh() 를 호출하고, 토큰을 갱신한 뒤 자동으로 요청을 재시도하니까요. 그런데 한가지 문제가 발생했습니다. 의존성 문제..

애플 로그인 서버부터 클라이언트까지(Swift + Nest.js + TypeScript)
iOS 앱을 개발할 때 소셜 로그인 기능을 구현한다면, 애플 로그인은 사실상 필수적인 기능입니다. 그렇기에 프로젝트를 할 때마다 애플 로그인을 구현하게 되는데, 매번 '어떻게 구현하더라' 하며 다시 찾아보는 일이 반복되곤 했습니다. “애플로부터 토큰을 발급받아 서버에 넘기면 서버가 알아서 로그인 또는 회원가입 처리를 진행하고, 그 후 액세스 토큰과 리프레시 토큰을 넘겨 받는다” 정도로만 기억하고 있었고, 로그인 플로우에 대한 명확한 이해가 부족해 발생하는 문제였습니다. 마침 클라이언트부터 백엔드까지 직접 구현해볼 수 있는 기회가 생겼고, 이번 기회에 로그인 플로우를 제대로 정리해야겠다고 생각해 iOS 클라이언트 코드와 서버 로직까지 모두 작성해보았습니다.iOS 클라이언트는 Swift 로, 서버 코드는 N..