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

home2 게시판 Next.js 게시판 질문 드립니다!

질문 드립니다!

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #107303

    들블
    참가자
    import { connectDB } from "@/util/database";
    import { MongoDBAdapter } from "@next-auth/mongodb-adapter";
    import NextAuth from "next-auth";
    import GithubProvider from "next-auth/providers/github";
    import NaverProvider from "next-auth/providers/naver";
    import CredentialsProvider from "next-auth/providers/credentials";
    import bcrypt from 'bcrypt';
    export const authOptions = {
      providers: [
        // naver login
        NaverProvider({
          clientId: process.env.NAVER_CLIENT_ID,
          clientSecret: process.env.NAVER_CLIENT_SECRET,
          profileUrl: 'https://openapi.naver.com/v1/nid/me',
        }),
        // github login
        GithubProvider({
          clientId: process.env.GITHUB_CLIENT_ID,
          clientSecret: process.env.GITHUB_CLIENT_SECRET,
        }),
        // jwt 사용자 지정 로그인 방식
        // 아이디 비밀번호 입력 방식 로그인 가능
        CredentialsProvider({
          // 1. 로그인 페이지 & 폼 자동생성해주는 코드
          name: "",
          credentials: {
            // 로그인 할 때 입력 받을 input 추가
            email: { label: "아이디", type: "text", placeholder: '아이디' },
            password: { label: "비밀번호", type: "password", placeholder: '비밀번호' },
          },
          //2. 로그인 요청시 실행되는코드
          //직접 DB에서 아이디,비번 비교하고 
          //아이디,비번 맞으면 return 결과, 틀리면 return null
          async authorize(credentials) {
            let db = (await connectDB).db('next');
            let user = await db.collection('user_cred').findOne({ name: credentials.email })
            if (!user) {
              console.log('해당 이메일은 없음');
              return null
            }
            const pwcheck = await bcrypt.compare(credentials.password, user.password);
            if (!pwcheck) {
              console.log('비번틀림');
              return null
            }
            return user
          }
        })
      ],
      // jwt 사용자 지정 로그인 방식
      //3. jwt 만료일설정
      session: {
        strategy: 'jwt',
        maxAge: 30 * 24 * 60 * 60 // 30일
      },
      // 4. jwt 만들 때 실행되는 코드
      // user 변수는 DB의 유저정보담겨있고 token.user에 뭐 저장하면 jwt에 들어감
      callbacks: {
        jwt: async ({ token, user }) => {
          if (user) {
            token.user = {};
            token.user.name = user.name
            token.user.email = user.email
          }
          console.log(user);
          console.log(token)
          return token
        },
        // 5. 유저 세션이 조회될 때 마다 실행 되는 코드
        session: async ({ session, token }) => {
          session.user = token.user;
          console.log(session)
          console.log(token)
          return session;
        },
        signIn: async (user, account, profile) => {
          console.log('Naver User Info:', profile);
          return true;
        },
      },
      // jwt 사용자 지정 로그인 방식 끝
      secret: 'qwer1234',
      adapter: MongoDBAdapter(connectDB)
    };
    export default NextAuth(authOptions);
    
    네이버 로그인을 추가 했는데
    console로 로그인 한 네이버 유저 이메일,번호,성별 등등을 출력하고싶은데
    별명,프로필 이미지 딱 2가지만 나오네요ㅠ
    유저 권한이랑 체크 할 건 다 체크 했어요.
    구글링 해도 잘 안나와서 질문 드립니다.
    #107309

    codingapple
    키 마스터
    signIn 아니면 jwt 함수에서 일반 파라미터들 출력해봅시다
    네이버 사이트에서 앱 만들 때 무슨 유저정보 꺼내쓸건지 설정해야할수도요
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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