• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Next.js 게시판 OAuth + session방식에서 accounts를 다루는 방법

OAuth + session방식에서 accounts를 다루는 방법

  • 이 주제에는 2개 답변, 2명 참여가 있으며 강기개2 년 전에 전에 마지막으로 업데이트했습니다.
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #87791

    강기개
    참가자
    좋은 강의 감사합니다. 덕분에 즐겁게 프로젝트 진행하고 있습니다.
    진행중에 제가 생각하는 방향이 잘못된건가 싶어서 질문 올립니다.
    
    
    로그인한 유저가 게시물에 좋아요를 누를 수 있고, 마이페이지에서 본인이 좋아요 누른 게시물만 볼 수 있는 기능을 만드려고 합니다.
    카카오 로그인을 db에 session 저장하는 방식으로 구현했고 로그인은 잘 됩니다.
    강의 내용처럼 한 명의 user여도 account가 여러 개일 수 있기에 당연히 account별로 좋아요 누른 게시물을 저장해야 한다고 생각했습니다.
    
    유저가 좋아요 누른 게시물을 저장하는 데이터를 mongodb에
    {
      _id: ObjectId()
      account_id: ObjectId() // accounts document의 _id
      like_list: [ ObjectId(), ... ] // 이 계정이 좋아요 누른 게시물들의 _id
    }
    이런 document로 만드려고 했습니다.
    
    그래서 몽고db의 accounts collection에서 _id를 가져오려고 했습니다. 
    useSession()같은 걸로 session 정보를 받아와도 {name, email, image}만 보내주고 보안을 이유로 _id같은 건 들어있지 않더라구요.
    찾아보니 [...nextauth.js] 파일에서 callbacks에 여러 함수를 정의해서 user나 account 정보를 구할 수 있는 것까진 알았습니다.
    그런데 출력해보니 user같은 경우에는 document의 _id까지 주는데 account(callbacks중 async signIn()에서 구할 수 있는)에서는 _id만 빼고 주더라구요.
    user.id와 account.provider를 이용해 db에서 검색해서 account의 _id를 구할 수 있을 것 같긴 합니다.
    그런데 이쯤되니
    'account의 id를 이렇게까지 안주는 건 내가 생각하지 못하는 이유가 있지 않을까' 라는 생각이 듭니다.
    
    제가 생각하는 account.id를 사용하는 방법이 일반적으로 사용하지 않는 방법인가요?
    아니면 user.id와 account.provider로 꾸역꾸역 account의 _id를 구해야 하나요?
    
    그리고 애초에 jwt가 아니라 db를 사용할 때 account정보는 useSession같은 걸로 session확인할 때 얻을 수 있는 방법이 없는 것 같은데
    account 정보를 사용하고 싶으면 callbacks의 signIn()에서 처음 로그인 했을 때 account를 구해와 어딘가에 저장해두어야 하는 건가요?
    
    
    #87886

    codingapple
    키 마스터
    _id는 DB에만 있는거라 세션id나 유저이메일가지고 직접 DB에서 출력해야 사용가능할듯요
    #87908

    강기개
    참가자
    결국 그렇게 해야하는군요.. 감사합니다
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠