학과별 커뮤니티 개발 - 5

정성윤·2023년 10월 28일
0

Swift 프로젝트

목록 보기
5/9

2023.10.13 ~ 2023.10.19

프론트엔드, 백엔드 간 데이터 통신 구축

제 담당 부분인 사용자 인증 및 회원가입 기능에 대한 개발을 진행하였습니다.

프론트엔드에서 같은 분야를 담당하고 있는 학생은 서버와의 통신을 Alamofire 라이브러리를 사용하여 통신하였고, 저는 URLSession을 사용하여 통신하였습니다.

서로 다른 방법으로 서버와의 통신을 하였기에, 회의때 코드리뷰를 하며 새로운 통신법에 대해서 알 수 있는 시간이었습니다.이번 서버와의 통신에서 URLSession 기능 프레임워크에 대해 알수 있게 된 시간이었습니다. 애플 공식문서, 교재 등을 찾아보며 공부할 수 있는 시간이었습니다.

URLSession

< URLSession >

데이터를 다운로드하거나 업로드하고, HTTP 요청을 보내거나 받을 때 사용됩니다. URLSession은 Apple의 Foundation 프레임워크에 속하며, 앱이 네트워크 작업을 비동기 적으로 수행할 수 있도록 도와줍니다.

URLSession의 세션 유형에서 저는 shared를 사용하였습니다.
서버와의 데이터 통신에서 입력받은 아이디와 비밀번호를 서버에 POST형태로의 데이터를 요청하기에 URLSessionDataTask를 사용하였습니다.
서버로부터 바디 형태로 전달받은 액세스토큰, 리프레시 토큰에 대해 저장하기 위해서 키 체인이라는 데이터 저장소를 이용했습니다.

KeyChainSwift

< KeyChainSwift >

키체인은 IOS및 macOS에서 안전하게 사용자 데이터 등을 저장하고 관리하는데 사용되는 암호화 저장소 입니다. 이를 통해 보안과 데이터 보호, 영구적 저장소, 공유 및 접근 제어, 암호화 옵션을 사용할 수 있습니다.

로컬 저장소를 이용해서 통신할때마다 저장된 토큰을 이용해 통신을 하고, 다양한 로직을 수행할 수 있습니다. 이번 주차에서는 로그인을 수행하기 위해 URLSession의 간단한 통신 로직, 전달 받은 토큰을 저장하기위해 Keychain 암호화 저장소에 대해 공부하였고 이를 개발에 적용하였습니다.

토큰을 저장, 로그인 유효성 검사, 로그아웃을 처리하는 메서드를 AuthenticationManager라는 클래스를 새로 만들어 해당 메서드를 관리했습니다. 토큰 유효성을 검사하는 메서드는 어플 기능 수행을 진행하며, 서버와의 지속적인 통신으로 액세스 토큰이 만료되면 리프레시 토큰을 통해 재발급을 받고 리프레시 토큰이 만료 됐을 경우에는 로그아웃을 시키는 방법으로 계획 중입니다. 내주, 토큰 유효성 검사와 다른 HTTP 통신을 개발할 예정입니다.

이번 주차에서는 로그인을 위한 간단한 POST 통신과 키체인으로 토큰 저장하는 방법을
배우고 개발하였습니다. 다음 주차에서는 이 키체인 암호화 저장소를 이용해 저장된 토큰 을 가져와 통신을 하기위해 인증하는 과정, 그리고 기본적인 UI를 만든 뷰에 POST 이외 의 서버와의 다른 통신을 진행해보도록 하겠습니다.

부족한 Swift 문법에 대해서는 야곰(Swift5) 교재, 개발 공식 문서를 참고하여, 개발을 진행했습니다. 프론트엔드에서 같은 분야를 담당하고 있는 강민수 학생은 서버와의 통 신을 Alamofire 라이브러리를 사용하여 통신하였고, 저는 URLSession을 사용하여 통 신하였습니다. 서로 다른 방법으로 서버와의 통신을 하였기에, 회의때 코드리뷰를 하며 새로운 통신법에 대해서 알 수 있는 시간이었습니다.

모르는 개념에 대해 Velog, GitHub에 정리해가면서 새로운 개념도 습득할 수 있는 시간 이었습니다. 이번 주차에서는 개인 공부 이외에 회의를 통하여 서로 사용한 프레임워크 에 대해 설명해주며 새로운 지식을 더 쉽게 알 수 있었던 시간이었습니다. 기존에 설정 한 학습 목표/성과 뛰어넘는 주차였습니다.

구현 코드 GitHub : https://github.com/Creative-Semester/ios
"AuthenticationManager" 참고

참고자료
https://developer.apple.com/documentation/security/keychain_services/ https://developer.apple.com/documentation/foundation/urlsession https://www.figma.com/file/dr9rKsORggCI6fW144hGkc/창의학기제?type=design&node-id= 178-806&mode=design&t=EeN8ECalCY4l4AOD-0 https://www.uxcrush.com/figma-mobile-templates/page/4/ https://www.youtube.com/@dev_jeongdaeri
야곰(Swift5) 교재

내주 계획
이번 주차에서는 로그인을 위한 간단한 POST 통신과 키체인으로 토큰 저장하는 방법을 배우고 개발하였습니다. 다음 주차에서는 이 키체인 암호화 저장소를 이용해 저장된 토큰 을 가져와 통신을 하기위해 인증하는 과정, 그리고 기본적인 UI를 만든 뷰에 POST 이외 의 서버와의 다른 통신을 진행해보도록 하겠습니다.

profile
이유있는 스위프트 개발자

0개의 댓글