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

jwb449730님의 프로필 이미지
jwb449730

작성한 질문수

탄탄한 백엔드 NestJS, 기초부터 심화까지

JWT와 로그인 서비스 & 순환 참조 모듈

질문입니다.

해결된 질문

작성

·

320

2

안녕하세요. 강의를 듣고 하는 도중에 잘 안되어 질문드립니다.

{

    "success"true,
    "data""login"
}
 
이렇게 나올까요..? 유효성검사도 안 됩니다.
(이메일을 반값으로 요청해도 위와 같이 나옵니다.
회원가입은 유효성검사 전부 잘 됩니다.)
컨트롤러 부분에서 jwtLogin 함수가 안불러지는거 같은데
어떤 부분이 문제일까요??
깃허브에서 코드 따와서 했는데도 계속 data가 토큰이 안 나오고
login만 나오네요.. ㅠㅠ 혼자 찾아보려고 했는데 안 되어서 질문드립니다.

 

 
import { Injectable, UnauthorizedException } from '@nestjs/common';
import { CatsRepository } from 'src/cats/cats.repository';
import * as bcrypt from 'bcrypt';
import { JwtService } from '@nestjs/jwt';
import { LoginRequestDto } from './dto/login.request.dto';

@Injectable()
export class AuthService {
  constructor(
    private readonly catsRepository: CatsRepository,
    private jwtService: JwtService,
  ) {}

  async jwtLogIn(data: LoginRequestDto) {
    const { email, password } = data;

    //* 해당하는 email이 있는지
    const cat = await this.catsRepository.findCatByEmail(email);

    if (!cat) {
      throw new UnauthorizedException('이메일과 비밀번호를 확인해주세요.');
    }

    //* password가 일치한지
    const isPasswordValidated: boolean = await bcrypt.compare(
      password,
      cat.password,
    );

    if (!isPasswordValidated) {
      throw new UnauthorizedException('이메일과 비밀번호를 확인해주세요.');
    }

    const payload = { email: email, sub: cat.id };

    return {
      token: this.jwtService.sign(payload),
    };
  }
}

답변 5

1

jwb449730님의 프로필 이미지
jwb449730
질문자

감사합니다. 이유는 모르겠지만 git에서 clone 하여 했더니 잘 됩니다.

윤상석님의 프로필 이미지
윤상석
지식공유자

다행이네요 ㅎㅎ 

보통 node_modules가 꼬이거나 dist 폴더(컴파일 결과물들) 문제로 이런 이슈가 많이 발생합니다. 스트레스 많이 받으셨을텐데 화이팅입니다!

0

윤상석님의 프로필 이미지
윤상석
지식공유자

저는 정상적으로 작동했는데 프로젝트를 전체 삭제하고 git clone으로 다시 받아보시겠어요??

0

jwb449730님의 프로필 이미지
jwb449730
질문자

죄송합니다...

그런데 코드를 제거 해도 같은 현상이 발생합니다...

회원가입 같은 경우는 

이와 같이 잘 나오는데 왜 login만 

{
    "success"true,
    "data""login"
}
 
이렇게 값이 나오는지 도대체 모르겠네요... ㅠㅠ

0

윤상석님의 프로필 이미지
윤상석
지식공유자

확인해본 결과 mongoose 버전 업이 되어 발생하는 문제입니다! 콘솔에 제거하라는 메세지가 원래 나오는데 개발 환경 등 모종의 문제로 안뜨신 것 같네요 ㅠㅠ

해당 이슈는 버전업되고 강의노트에 남겼습니다! 

0

윤상석님의 프로필 이미지
윤상석
지식공유자

안녕하세요!

코드는 분명 문제가 없는데 터무니 없게 출력이 되는 경우에는 vscode에서 파일 등을 import할때 다른 폴더의 파일을 import할 경우에 발생할 수 있습니다! 

node_modules를 지우고 다시 실행해 보시고 프로젝트 폴더 자체를 다른 경로로 옮겨서 다시 실행해 보세요!

이렇게 하셨는데도 잘 안되고 도움이 필요하시면 전체 프로젝트 깃허브 주소를 보내주시면 추가적인 도움을 드리겠습니다.

jwb449730님의 프로필 이미지
jwb449730
질문자

안녕하세요. 답변 감사합니다.

알려주신 대로 폴더를 옮기고 node_modules 지우고 다시 했는데도 로그인할 때 토큰이 생길지 않습니다.

https://github.com/WooBinJang/Cats_Project_NestJS

 

혹시 괜찮다면 깃허브 코드 확인 부탁드립니다... ㅠㅠ

윤상석님의 프로필 이미지
윤상석
지식공유자

bcrypt가 package.json에 없습니다! 설치 후에 다시 진행해 보시겠어요?

jwb449730님의 프로필 이미지
jwb449730
질문자

전에 폴더를 옮기는 과정에서 bcrypt가 없어 다시 install 하였으나

기존과 같은 data 가 login으로만 나타납니다... 

 

jwb449730님의 프로필 이미지
jwb449730

작성한 질문수

질문하기