1️⃣ 로그아웃 이후 이전 사용자로 팔로우 요청이가네?
팔로우 요청시 토큰이 이전 사용자라서 발생한 문제
export const Follow = (token, userId) => { return request({ method: API_METHOD.POST, url: `/follow/create`, headers: { Authorization: `Bearer ${token}`, }, data: { userId, }, }); }; export const unFollow = (token, id) => { return request({ method: API_METHOD.DELETE, url: `/follow/delete`, headers: { Authorization: `Bearer ${token}`, }, data: { id, }, }); };
2️⃣ 실험
토큰: handles에 있는 const [localToken, setLocalToken] = useLocalToken();) 로 가져온 값
로컨토큰: 로컬 스토리지에 있는 토큰
1. 배포 사이트
결과: 팔로우 시 사용하는 토큰은 처음 접속자의 토큰이다.
실험결과
관리자로 로그인 : 토큰 일치
- 토큰: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyOWUyOWJkNmQxOGI0MWM1YjIzOGJhMiIsImVtYWlsIjoiYWRtaW5AcHJvZ3JhbW1lcnMuY28ua3IifSwiaWF0IjoxNjU1ODg2MjIwfQ.iX0DzjV7pQXlKOHch0_NsIuzgfbw28cT2fVpVy2F68Y
- 로컬 토큰
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyOWUyOWJkNmQxOGI0MWM1YjIzOGJhMiIsImVtYWlsIjoiYWRtaW5AcHJvZ3JhbW1lcnMuY28ua3IifSwiaWF0IjoxNjU1ODg2MjIwfQ.iX0DzjV7pQXlKOHch0_NsIuzgfbw28cT2fVpVy2F68Y
관리자 로그아웃 이후
초린이 로그인: 토큰 불일치 여전히 관리자 토큰 사용
- 토큰 (팔로우시)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyOWUyOWJkNmQxOGI0MWM1YjIzOGJhMiIsImVtYWlsIjoiYWRtaW5AcHJvZ3JhbW1lcnMuY28ua3IifSwiaWF0IjoxNjU1ODg2MjIwfQ.iX0DzjV7pQXlKOHch0_NsIuzgfbw28cT2fVpVy2F68Y
- 로컬 토큰
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjMwMWM3NDg1MDU5MTc5OTUwYzMxYSIsImVtYWlsIjoiZmRzZmpAY28ua3IifSwiaWF0IjoxNjU1OTA1NDM1fQ.affBHJGe2Wrzmfsln5Ux-Ku4leUZZwcDkl43TXPOa-E
- 토큰 (이름변경시)
근데 웃긴게 팔로우 이외의 요청엔 로컬토큰과 같은 토큰 사용
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjMwMWM3NDg1MDU5MTc5OTUwYzMxYSIsImVtYWlsIjoiZmRzZmpAY28ua3IifSwiaWF0IjoxNjU1OTA1NDM1fQ.affBHJGe2Wrzmfsln5Ux-Ku4leUZZwcDkl43TXPOa-E
초린이 로그아웃 이후
초록이에요 로그인: 토큰 불일치 여전히 관리자 토큰 사용
- 토큰 (팔로우시)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyOWUyOWJkNmQxOGI0MWM1YjIzOGJhMiIsImVtYWlsIjoiYWRtaW5AcHJvZ3JhbW1lcnMuY28ua3IifSwiaWF0IjoxNjU1ODg2MjIwfQ.iX0DzjV7pQXlKOHch0_NsIuzgfbw28cT2fVpVy2F68Y
- 로컬 토큰
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjJlMjkxNDg1MDU5MTc5OTUwOTljOSIsImVtYWlsIjoiZ3JlZW40QGNvLmtyIn0sImlhdCI6MTY1NTkwNTg0NH0.bpS-1J4i9hvGDniO5uxLz9UYVipUMqywJ7pKKpR-jag
- 토큰 (이름변경시)
근데 웃긴게 팔로우 이외의 요청엔 로컬토큰과 같은 토큰 사용
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjJlMjkxNDg1MDU5MTc5OTUwOTljOSIsImVtYWlsIjoiZ3JlZW40QGNvLmtyIn0sImlhdCI6MTY1NTkwNTg0NH0.bpS-1J4i9hvGDniO5uxLz9UYVipUMqywJ7pKKpR-jag
2. 개발자 서버
배포 서버와 같은 결과
3️⃣ 원인 추측
localToken의 문제 .. 그런데 어째서 얘만…
현재 token을 받아서 사용하는 곳은 handles.jsx 파일
해당 파일 내에서 모두 아래 localToken을 사용중…
const [localToken, setLocalToken] = useLocalToken();
이름수정의 경우 localToken이 현재 사용자의 토큰임
//회원 이름수정 const handlechangeUserName = useCallback( async (fullName, username) => { console.log('이름변경토큰', localToken); console.log('이름변경토큰'); if (localToken && fullName) { await changeUserName(localToken, fullName, username); } }, [localToken], );
근데 팔로우, 언팔만 왜이러지..?
얘네 둘은 이름 변경이랑 같은 파일에 있고, 같은 localToken을 사용함. 근데 왜 token이 다른거지..
//팔로우 const handlefollow = useCallback( async (userId) => { if (localToken && userId) { console.log('팔로우토큰', localToken); const { data } = await Follow(localToken, userId); await setNotification(localToken, 'FOLLOW', data._id, data.user, null); return data; } }, [localToken], ); //언팔 const handleUnFollow = useCallback( async (followId) => { console.log('팔로우토큰', localToken); if (localToken && followId) { await unFollow(localToken, followId); } }, [localToken], );
관리자
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjJlMjkxNDg1MDU5MTc5OTUwOTljOSIsImVtYWlsIjoiZ3JlZW40QGNvLmtyIn0sImlhdCI6MTY1NTkwODA3N30.Tu1X_14kzc03pwm_zMg_5tkjqyEuCADBbzCXKhiKeC4”
프로필
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjJlMjkxNDg1MDU5MTc5OTUwOTljOSIsImVtYWlsIjoiZ3JlZW40QGNvLmtyIn0sImlhdCI6MTY1NTkwODA3N30.Tu1X_14kzc03pwm_zMg_5tkjqyEuCADBbzCXKhiKeC4
비밀번호
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjJlMjkxNDg1MDU5MTc5OTUwOTljOSIsImVtYWlsIjoiZ3JlZW40QGNvLmtyIn0sImlhdCI6MTY1NTkwODA3N30.Tu1X_14kzc03pwm_zMg_5tkjqyEuCADBbzCXKhiKeC4
팔로우
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjJlMjkxNDg1MDU5MTc5OTUwOTljOSIsImVtYWlsIjoiZ3JlZW40QGNvLmtyIn0sImlhdCI6MTY1NTkwODA3N30.Tu1X_14kzc03pwm_zMg_5tkjqyEuCADBbzCXKhiKeC4
관리자 토큰
HANDLE_팔로우토큰 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjJlMjkxNDg1MDU5MTc5OTUwOTljOSIsImVtYWlsIjoiZ3JlZW40QGNvLmtyIn0sImlhdCI6MTY1NTkwODA3N30.Tu1X_14kzc03pwm_zMg_5tkjqyEuCADBbzCXKhiKeC4
이름
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjMzMjMzNDg1MDU5MTc5OTUwZTBkOCIsImVtYWlsIjoiZ3JlbTFAY2wua2UifSwiaWF0IjoxNjU1OTEwOTYzfQ.j9HLxVUgIV0p4e5lQavdptixCAlnPRxLKf0U73ZY8Ug
선인장짱짱
이름변경
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjMzMjlmNDg1MDU5MTc5OTUwZTI0MCIsImVtYWlsIjoiZ3JlZUBjby5rciJ9LCJpYXQiOjE2NTU5MTEwNzF9.9yCChwb5IMEBd5rZDUR4NPa8Uj4hWAPIAoHohe-SzyQ
팔로우
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjJlMjkxNDg1MDU5MTc5OTUwOTljOSIsImVtYWlsIjoiZ3JlZW40QGNvLmtyIn0sImlhdCI6MTY1NTkwODA3N30.Tu1X_14kzc03pwm_zMg_5tkjqyEuCADBbzCXKhiKeC4
로컬스토리지
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjMzMjlmNDg1MDU5MTc5OTUwZTI0MCIsImVtYWlsIjoiZ3JlZUBjby5rciJ9LCJpYXQiOjE2NTU5MTEwNzF9.9yCChwb5IMEBd5rZDUR4NPa8Uj4hWAPIAoHohe-SzyQ”
꽃님
팔로우
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjMzMjlmNDg1MDU5MTc5OTUwZTI0MCIsImVtYWlsIjoiZ3JlZUBjby5rciJ9LCJpYXQiOjE2NTU5MTEwNzF9.9yCChwb5IMEBd5rZDUR4NPa8Uj4hWAPIAoHohe-SzyQ
이름변경
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjMzM2FjNDg1MDU5MTc5OTUwZTNkMCIsImVtYWlsIjoiZ3JlZW45OTFAY28ua3IifSwiaWF0IjoxNjU1OTExMzQwfQ.qw6UHgGG-pw6pL-5LwNfGq0MOZGhhkPDz9rrqIl0l08
로컬스토리지
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjMzM2FjNDg1MDU5MTc5OTUwZTNkMCIsImVtYWlsIjoiZ3JlZW45OTFAY28ua3IifSwiaWF0IjoxNjU1OTExMzQwfQ.qw6UHgGG-pw6pL-5LwNfGq0MOZGhhkPDz9rrqIl0l08”
사용자
로컬
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyOWUyOWJkNmQxOGI0MWM1YjIzOGJhMiIsImVtYWlsIjoiYWRtaW5AcHJvZ3JhbW1lcnMuY28ua3IifSwiaWF0IjoxNjU1OTExODk3fQ.RI5YnV_tOFKI-UBQ8mbe-lKXAAaXZEbSIafek4vSSmc”
팔로우
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYjMzM2FjNDg1MDU5MTc5OTUwZTNkMCIsImVtYWlsIjoiZ3JlZW45OTFAY28ua3IifSwiaWF0IjoxNjU1OTExMzQwfQ.qw6UHgGG-pw6pL-5LwNfGq0MOZGhhkPDz9rrqIl0l08