인프런 커뮤니티 질문&답변

여닝님의 프로필 이미지
여닝

작성한 질문수

만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)

댓글 추가 API 뷰와 연결

post하는 경우에 uid 설정

작성

·

67

·

수정됨

0

안녕하세요 강사님. 우선 강의 잘 듣고 있습니다! 강의 듣다보니 궁금한 점이 있는데 message를 post하는 경우나 reply를 post 하는 경우에,postData에 들어가는 uid를 userInfo에 있는 정보를 사용하시던데이 정보는 로그인한 유저(authUser)의 uid를 사용하는 것이 아니라 해당 홈페이지(e.g. https://blahx2.totu.dev/totuworld) (totuwolrd의 uid)정보를 사용하는 것이 맞나요?댓글 등록시에도 마찬가지로 userInfo.uid를 uid로 사용하시더라고요.이렇게 되면 글,댓글 등록시 데이터베이스의 uid에는 로그인한 사용자의 uid가 아닌 사용자 홈페이지의 uid가 들어갈텐데 이게 맞는건지 궁금해서 여쭤봅니다! 혹시 이렇게 uid를 설정하신 이유가 로그인하지 않은 유저를 위한 것인가요?반대로 로그인을 한 유저만 익명 또는 실명으로 댓글을 남길 수 있도록 하려면 uid를 로그인한 유저의 uid로 설정해도 될까요? 아래는 강사님이 데이터를 post 하는 경우의 코드입니다.!

 

<Button
  disabled={message.length === 0} //입력값이 없으면 비활성화
  bgColor="#FFB86C"
  color="white"
  colorScheme="yellow"
  variant="solid"
  size="sm"
  onClick={async () => {
    const postData: {
      uid: string;
      message: string;
      author?: {
        displayName: string;
        photoURL?: string;
      };
    } = { uid: userInfo.uid, message };
    if (isAnonymous === false) {
      postData.author = {
        displayName: authUser?.displayName ?? 'anonymous',
        photoURL: authUser?.photoURL ?? '/user.png',
      };
    }
    const messageResp = await postMessage(postData);
    if (messageResp.result === false) {
      toast({ title: messageResp.message, position: 'top-right' });
    }
    setMessage('');
    // 리프레쉬 글 작성하면 page를 1로 돌려 messageList를 다시 받아온다.
    setPage(1);
    setTimeout(() => {
      setMessageListFetchTrigger((prev) => !prev);
    });
 }}
>등록</Button>

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

여닝님의 질문에 답변드리겠습니다. postData에 들어가는 uid를 수강생님의 로그인한 정보인 userInfo에서 가져오는 방식은 로그인한 유저의 uid를 사용하는 것이 맞습니다. 이 방식은 로그인한 사용자가 글이나 댓글을 올릴 때 해당 유저를 식별하기 위한 방식으로 사용됩니다.

질문에서 언급하신 것처럼 만약 홈페이지 자체의 uid를 사용한다면, 이는 말씀하신 것처럼 홈페이지의 고유 식별자로 사용자 개개인을 식별하기 어렵게 만듭니다. 이 경우, 글이나 댓글이 특정 사용자에게 소속되는 것이 아니라 홈페이지 자체에 소속이 되는 형태가 될 것입니다.

로직상 로그인한 사용자만 글이나 댓글을 남길 수 있도록 하려면, 로그인한 사용자의 uid를 사용하는 것이 맞습니다. 로그인하지 않은 사용자를 위해 uid를 설정하는 방식은 일반적으로 사용자 인증을 요구하지 않는 오픈된 커뮤니티나 기능에서 주로 사용됩니다.

결론적으로, 로그인한 사용자만 글과 댓글을 남길 수 있도록 하려면 postData에 로그인한 유저(authUser)의 uid를 사용하는 것이 가장 적절합니다.uid를 로그인한 유저의 것으로 설정할 경우, 각 글이나 댓글을 올린 사용자를 명확하게 식별할 수 있으며, 사용자 간의 소통도 더 용이해질 것입니다.

강의를 듣는 동안 궁금한 점이 생기신다면 언제든지 문의해주세요. 학습에 도움이 될 수 있도록 최선을 다하겠습니다!

여닝님의 프로필 이미지
여닝

작성한 질문수

질문하기