February 20, 2022
프로그래머스 신고 결과 받기 문제를 풀었다.
전역상태에 있는 user 정보 유무로 로그인 상태를 확인했는데, 새로고침이나 로그인시 app.ts에서 로그인 정보를 확인하고 서버로부터 맞는 데이터를 가져오는 시간때문에 해당 화면이 로그인된 상태가 늦게 출력되는 문제를 해결하려고 로그인이 성공하면 로컬스토리지로 바로 로그인 상태를 인지하도록 했다. 결론은 최상위 컴포넌트가 랜더링 될때마다 firebase 로그인 여부를 확인하는 함수, 로컬스토리지 로그인 상태를 확인하는 함수, 로그인된 유저가 바뀔때마다 그 상태를 전역상태로 다시 저장하는 함수를 생성했다.
또한 로그인 유저를 확인하는 방법도 변경했다. 기존에 유저 데이터를 가져올때 email을 보내던 방식에서
axios.defaults.headers.common['Authorization'] =
'Bearer ' + (await user.getIdToken())
axios로 요청을 보낼때 헤더 Authorization에 firebase auth토큰을 담아서 보내고 서버에서 토큰에 담긴 json데이터를 확인후 objectId에 맞는 유저정보를 보내도록 했다.
회원가입할 때 유저 _id에 firebase.authtoken을 넣어주었고, 퀴즈를 가져오거나 생성할때 유저_id로 populate를 사용해 퀴즈 데이터를 가져오기, 생성하기 작업을 수행했다.