티스토리 뷰
앱에는 JWT를 처음 적용해봤다.
jwt는 json web token의 줄임말이다. velopert.com/2389 여기에 jwt 자체에 대한 설명이 자세하게 나와있다.
로그인 성공시 오는 헤더 값들이다.
이중에 Authorization과 RefreshToken을 봐야 한다 !!!
둘다 JWT로 암호화 되어 있는데, 얘를 JWTDecode라는 pod을 써서 decode 시켰다.
Authorization을 decode 시킨 결과이다. 여기서 login_id, year같이 앞으로 계속 필요한 데이터를 UserDefaults에 저장 해줬다.
decode시키기 전의 Authorization 값 자체가 access token이 되므로, 그 값도 UserDefaults에 저장해준다.
다음은 RefreshToken인데, 얘는 따로 decode 시키지 않고 그 값 자체가 refresh token이 되므로, 그 값도 UserDefaults에 저장해준다.
그리고 나는 매 API 콜마다, 헤더에 access token 값을 넣어서 보내준다.
이런식으로!!
그리고 앱의 모든 API에 대해서,
만약 tokenValid: false가 response로 오면, 토큰을 refresh 하는 함수를 다시 콜해줘야 했다.
refresh 함수의 response가 정상적으로 오면 (tokenValid:true가 오면), 원 API를 호출해줘야 했다.
refresh 함수의 response가 비정상적으로 오면 (tokenValid:false가 오면), 로그인을 다시 요구해야 하므로 로그인 화면으로 돌아가야 한다!.!
* accessToken의 유효기간은 30분, refreshToken의 유효기간은 3일*
[참고]
stackoverflow.com/questions/51166446/how-to-refresh-jwt-token-status-code-500-in-alamofire-swift
'macOS, iOS' 카테고리의 다른 글
[iOS] UIDocumentInteractionController 이용하기 -> preview 가능할때만 preview 해주기. (1) | 2020.08.04 |
---|---|
[iOS] UIButton class 적용시 모두 같은 action 하도록 하기 (0) | 2020.08.01 |
[iOS] scrollview 안에 textview 넣기 (0) | 2020.07.31 |
[iOS] push 메세지 내용 변경하기, 특정 push 안받게 하기? ( feat. slient push ) (0) | 2020.07.31 |
[iOS] JSON 형식의 푸시 처리하기 (0) | 2020.07.31 |