-
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
카톡 친구추가 API #242
카톡 친구추가 API #242
Conversation
다시 생각해보니 token으로 stateless 하게 관리하는게 나을것 같아 더 수정해보겠습니다 -> 수정 완료했습니다 |
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.
안그래도 DB에 저장되는 게 조금 관리하기 힘들 것 같아서
변경요청 하려고 했었는데 좋네요
원래 리뷰할 당시에는 redis로 관리하는게 어떨까 생각을 했었는데요
이것도 괜찮아보이네요
혹시 jwt 로 만들었을 때 token 길이가 어느정도 되나요 너무 길어지지는 않나요?
그리고 원래 스펙이 10초 ttl 이에요?
또 branch 정리해주시면 좋을 것 같아요 git rebase --onto develop HEAD~7
git rebase --skip # 다빈커밋 무시
git push -f 해서 찬영님 커밋만 남기고 force push 한번 해주세요 |
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.
그리고 슬랙에도 남겼지만
보안이 어느정도 필요한거에요?
일단 jwt 특성상 payload 복호화는 누구나 가능해서 user_id를 숨기려는 건 불가능할 것 같고요
만약 jwt를 쓴다면 유저 아이디 대신 닉네임,
아니라면 redis로 특정 길이의 key로 id 관리하는 것도 괜찮을 것 같아요
사실 전 개인적으로 signedUrl 도 필요없다고 생각하긴 합니다...
(닉네임 base64 인코딩해서 넘겨도 된다고 생각)
fa8303d
to
40147a9
Compare
ttl은 값 바꿔서 테스트하던걸 실수로 올렸는데 2주로 해두겠습니다 토큰 길이는 원래 190자에서 불필요한 부분 제거하니 135자 정도 나와요 보안은 id를 숨기는 것보단 본인이 발급한 링크가 맞는지 검증하는 거(userId 안다고 아무나 친추 못하게)랑 일정 시간 지나면 링크 만료되는 정도가 필요할 것 같아서 jwt를 사용했습니다 |
40147a9
to
5e7552b
Compare
5e7552b
to
6a7ec1c
Compare
말씀하신 부분 반영해서 랜덤한 값 만들어서 redis에 이에 대한 userId를 저장하게 바꾸었습니다. 그런데 저희 쓰는 elasticache가 노드가 꺼지면 저장이 안되는 것 같은데 안정성이 괜찮을지 궁금합니다 |
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.
LGTM
이대로 머지해도 될 듯 합니다.
코멘트 쓴 부분 조금 고치면 더 좋을 것 같아요
redisTemplate.opsForValue().setAndAwait(redisKey, userId) | ||
redisTemplate.expireAndAwait(redisKey, Duration.ofDays(14)) |
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.
setAndAwait에 ttl 같이 넣을 수 있는 것 같아요
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.
그리고 중복 체크하는거 하나 있으면 좋을 것 같아요
매우 낮은 확률이긴 한데 혹시 key 겹칠 수 있으니..
"friend-link:" prefix가 여러번 나오는데요 |
GET /friends/generate-link
: 친구 추가 링크를 위한 토큰 생성POST /friends/accept-link/{requestToken}
: 값을 받아서 링크로 친구 신청 수락랜덤한 값 생성해서 redis에 userId와 같이 저장하는 방식으로 만들었고 친구추가 정상적으로 이루어지는거 확인했습니다