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

jwb449730님의 프로필 이미지

작성한 질문수

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

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

질문입니다.

해결된 질문

21.10.12 14:36 작성

·

314

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
질문자

2021. 10. 21. 15:40

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

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

2021. 10. 21. 15:42

다행이네요 ㅎㅎ 

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

0

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

2021. 10. 20. 21:28

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

0

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

2021. 10. 20. 15:15

죄송합니다...

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

회원가입 같은 경우는 

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

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

0

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

2021. 10. 20. 14:51

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

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

0

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

2021. 10. 12. 16:45

안녕하세요!

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

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

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

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

2021. 10. 15. 18:56

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

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

https://github.com/WooBinJang/Cats_Project_NestJS

 

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

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

2021. 10. 19. 12:34

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

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

2021. 10. 19. 23:05

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

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