페어 활동 기록_Day17_상준_윤우 - boostcampwm-2022/web33-Mildo GitHub Wiki

✂️ 분배된 이슈

  • 로그인 모달창 띄우기(#41)
  • 로그인 모달창 닫기(#46)
  • 네이버 소셜 로그인(#45)

🚩 구현 목표

  • 로그인 모달창과 관련된 UI 레이아웃 생성하기
  • 밀도에 사용자가 로그인할 수 있는 기능 구현하기

🍀 세부 목표

구현할 구체적인 내용을 체크리스트로 작성합니다.

🖥️ 구현 내용

ModalFilter 혹은 X를 클릭 시 로그인 모달창 닫히는 기능

  • ModalFilter 컴포넌트에서 현재 열려있는 모든 모달 닫히게 할지 특정 모달을 닫게하는 콜백 함수를 보낼지 고민하다가 콜백함수를 보내주는 식으로 구현 → 이후 어떻게 할지 더 고민해봐야할듯

Naver OAuth2를 passport의 passport-naver-v2 전략을 통해 로그인 성공

스크린샷 2022-11-29 오후 7.38.37.png

📖 학습 내용

새롭게 알게 된 내용을 서술합니다. 길거나 깊은 내용은 따로 페이지를 생성하여 작성합니다.

h2 단락으로 나눕니다.

🩺 의사결정

논의가 필요한 내용을 서술합니다.

h2 단락으로 나눕니다.

🚧 Trouble Shooting

dangerouslySetInnerHTML를 통해 문자열을 HTML로 출력하기

export const createNaverLoginSvg = () => {
  return `<svg>...</svg>`;
};
  • 다음과 같이 svg를 문자열로 사용하려고 했지만 HTML이 아닌 문자열 그대로 출력이 되는 문제 발생
  • dangerouslySetInnerHTML은 React에서 innerHTML을 사용할 수 있게 할 수 있게 해줌
<NaverLoginBtn dangerouslySetInnerHTML={{ __html: createNaverLoginSvg()}}></NaverLoginBtn>

바로 이전 커밋 내역 바꾸는 방법

Unknown authentication strategy ‘naver’

스크린샷 2022-11-29 오후 6.50.51.png

  • 원인: strategy 자체를 만들기만 하고, 실행은 하지 않아서 생기는 오류이다.
  • app.ts에서 /passport/index.ts를 실행시켜주어 해결

CORS 에러

Untitled

  • client에서 axios를 통해 Naver OAuth2를 접근할 경우 cors 에러가 발생
  • 이전 미션에서 a태그의 href에 로그인하는 주소 담아 보내서 해결
  • https://gomgomkim.tistory.com/9 → Link와 a href의 차이

네이버 페이지에서 ‘페이지가 존재하지 않습니다’ 에러

  • .env 파일에 NAVER_CLIENT_ID에 세미콜론이 붙어있어서 생기는 에러 → 세미콜론을 제거해서 에러를 해결함

session 관련 에러 → 2번 나옴

  • passport.authenticate() 메서드에서 session 속성을 false로 설정해서 에러를 해결함 → 사실 근본적으로 해결하는 게 아니라, 세션을 안쓰게끔 문제를 회피함 → 차후 시간이 남으면 세션을 이용해서 구현해야 될 것 같다.

User 객체의 타입 설정이 지정되지 않아 에러가 나는 문제

데이터를 DB에서 가져올 때, 여러 번 가져오는 에러 + 새롭게 갱신되는 에러

스크린샷 2022-11-29 오후 10.46.49.png

  • NaverStrategy에서는 한번만 호출되지만(정상 호출), serializeUser와 deserializeUser가 여러 번 호출되는 문제(비정상)

  • serilalizeUser와 deserializeUser가 한 번의 클릭에 순차적으로 클릭되는 문제 발생

  • deserializeUser가 여러 번 호출되는 문제 해결 방법

app.use('/api', apiRouter);

// passport 초기화, session 연결
app.use(passport.initialize());
app.use(passport.session());
  • passport와 관련된 코드를 serving 해주는 코드보다 뒤에 위치하도록 한다. → 그런데, 이 경우에는 deserializeUser가 호출되지 않는 문제가 발생하게 된다.

❓ 궁금한 점

html에 안에 무수히 div태그가 생기는 현상

스크린샷 2022-11-29 오후 2.48.07.png

  • 상세정보 모달과 로그인 모달과 같은 layer에 무수히 많은 빈 div가 들어가 있는 것을 목격

    • 처음엔 마커때문이라고 생각했지만 마커의 태그는 따로 존재하고 있었음
    • 마커 맞습니다!
  • 원인과 해결방안: Marker.tsx에서 ‘return

    ;’‘return <></>;’ 으로 바꾸면 안될까..
  • → 윤우의 의견 : 컴포넌트가 아니라 메서드로 해결할 수 있지 않을까?

  • API로 가져오지 않은 별도 리소스(이미지, 동영상 등)는 비동기로 처리해야 합니다. → 이 말의 의미가 뭘까

interface ModalFilterProps {
  isClickModalFilter: (update: boolean) => void;
  // isClickModalFilter: (update: SetStateAction<boolean>) => void; -> 그럼에도 에러 안남!
}

const ModalFilter: React.FC<ModalFilterProps> = ({ isClickModalFilter }) => {
  return <Filter onClick={() => isClickModalFilter(false)}></Filter>;
};
  • SetStateAction이란 정확하게 무엇인가?

  • 참고 자료

  • 어떻게 하면 네이버 로그인 API를 이용해서 세션을 이용한 로그인을 구현할 수 있을까? → 참고 자료

🎸 기타

  • 아이콘 관련 이슈로 인해 client에 yarn을 이용해서 react-icons를 설치하였습니다.
// 네이버 로그인 API
// CLIENT_ID=_U1exohhZA7WrCbYqOU7
// CLIENT_SECRET=R0wNo2MaR6

Untitled

⚠️ **GitHub.com Fallback** ⚠️