-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Retrofit Provider 분리 #144
Retrofit Provider 분리 #144
Conversation
easyhooon
commented
Oct 30, 2023
•
edited
Loading
edited
- 로그인을 위한 (헤더에 로그인 토큰을 담지 않는) Retrofit Provider 추가
- 각 화면에 배경색을 지정하는 코드 수정
- 중복되는 코드 및, 주석 처리된 코드 제거
로그인 할 때는 헤더에 GuestLoginToken 을 포함 하지 않아야 하므로, 헤더에 GuestLoginToken 을 포함 하지 않는 Retrofit Provider 를 추가
modifier.background(color)로 원하는 배경색이 지정되지 않아 color 속성으로 배경색을 지정하는 식으로 변경
주석 처리된 코드 제거
Bitrise가 갑자기 왜 동작하지 ㄷ bitrise fail뜬거는 무시해도 될듯.. 확인해봐야겠다 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
현상
해당 이미지를 보면 확실히 처음 다운로드가 됐을 때는, 헤더에 아무것도 담기지 않음 그리고 연이어 호출되는 연결에 헤더가 담김
그러면 왜 이렇게 되는 걸까
싱글톤으로 생성한 레트로핏 객체는 내부의 코드들을 한번에 관리하므로 확실히 유의미한 것이 맞음
- 인터셉터가 단일 통신이 일어날 때마다 통신의 흐름 끄트머리에 붙어 실행되는 메커니즘이기 때문에
- 동시에 우리가 유저 토큰을 싱글톤으로 불러오는 것이 아니기 때문에 (매번 새로 불러오지)
그래서 첫번째로 헤더 없이 토큰을 받아오는 통신을 하고, 그 다음의 통신에 바로 토큰이 들어가는 것으로 확인됨
그러면 지금 지훈이 형의 바뀐 코드는 어떤가?
표면상으로는 제일 첫번째가 아니면 호출되지 않을 레트로핏 객체임은 맞는 듯함
하지만, 서버에서 null을 체크하더라도 클라에서도 null을 체크해서 보내주 듯 안정성이나 확실성을 보면 이렇게도 구현되어도 괜찮은듯
지훈이형이 띄워준 캡쳐에는
이와 같은 내용은 확인되지 않는걸,,? 그냥 isSeneitiveHeader 일때만 ""로 하겠다는 의미만 있는 것 아닌가? 민감한 정보는 이런걸 의미한다는 구만,, 어찌됐든 우리는 현재 유제 토큰의 첫 값(값이 없을 때)을 ""으로 보내주고 있으니 null이 아니기 때문에 헤더에는 담겨가고 있는것 같아 null이 들어오면 헤더를 추가하지 않는게 아니라 오류가 뜨지 않을까? 함수가 null 자체를 허용하지 않는걸..? |
ㅇㅎ 잘못 말했네 내가
헤더에 추가되지 않는다는 건 이걸 통해 추론해본거였어 지금은 이미 merge 되어가지고 저때 코드 버전으로 돌려보진 않아서 |
아무튼 레트로핏은 생각보다 예민한 네이밍을 지양하는 것 같기도 하고, |
나도 sensitive 한 목록 중 Authorization 밖에 써보진 않았는데 Jwt 토큰을 통해 통신할 땐 쓰이는 헤더 네임이거든 ("Authorization", "Bearer $AccessToken") 이런식으로 ㅇㅇ 아마 나머지는 jwt 토큰을 통한 방식이 아니라, 세션, 쿠키등을 이용한 통신이긴 할거야 많이 쓰일거구 다만 이런 헤더들을 sensitive 하게 음.. 좀 특별하게 다루는 듯 -> 아 다시 보니깐 Exception에 메세지를 로그에 뿌릴 때 검사하는거네 그렇지 아무래도 jwt 토큰이든, 세션이든 쿠키이든 다 민감한 정보이니까 Exception message 를 뿌리기 전에 민감한 정보라고 판단되면 감춰버리는 듯함 "" 로, 로그를 확인해서 토큰을 갈취할 수도 있는 것이니까, 얘네가 아니면 별로 민감한 정보라고 판단하지 않는 경우에만 로그에 $value 로 그냥 header 의 value 를 공개 해버리는 식인듯! |
아 그러면 헤더에 담기는 현상 자체는
로 설명되는거고 저 캡쳐들은 예외로그 띄울 때 값을 보여주지 않기 위해 감춰둔거구나 |
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/require.html |
아주 멋지군.. 👍 |