inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

차세대 Node.js 백엔드 서버 개발(Fastify & Prisma & Typescript와 함께하는)

인증관련 - login

섹션 5 login 인증 기능

해결된 질문

333

Lia

작성한 질문수 14

0

섹션5 인증관련 login 기능 코드를 수업과 똑같이 작성 했는데 postman 에서

{ "success": false, "status": 400, "message": "Bad Request" } 에러 뜹니다.

터미널에서 뜨는내용

{"level":50,"time":1718325166296,"pid":23544,"hostname":"DESKTOP-BDGKO8E","reqId":"req-d","err":{"type":"Error","message":"\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60","stack":"Error: \"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60\n at module.exports [as sign] (D:\\Practice\\slog-fastify-prisma-ts-study\\node_modules\\jsonwebtoken\\sign.js:213:22)\n at generateRefreshToken (d:\\Practice\\slog-fastify-prisma-ts-study\\src\\lib\\authHelper.ts:54:30)\n at Object.loginWithPassword (d:\\Practice\\slog-fastify-prisma-ts-study\\src\\services\\authService.ts:46:30)\n at Object.<anonymous> (d:\\Practice\\slog-fastify-prisma-ts-study\\src\\routes\\auth\\index.ts:24:28)"},"msg":"\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60"}

{"level":30,"time":1718325166297,"pid":23544,"hostname":"DESKTOP-BDGKO8E","reqId":"req-d","res":{"statusCode":400},"responseTime":44.27779999934137,"msg":"request completed"}

어디 부분을 수정해야 하는지요?

node.js typescript rest-api prisma fastify

답변 2

0

Lia

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

우선 register 와 로그인 기능은 잘 되는데 logout 기능이 계속 아래와 같이 나옵니다.

{
    "success": false,
    "status": 400,
    "message": "Unauthorized"
}

무슨 문제인지를 모르겠습니다.
소스코드 이멜로 보냈습니다.

0

Indie Coder

이부분은 쿠키 생성때문인것 같습니다.

쿠키 옵션에서의 domain을 127.0.0.1로 설정하고

postman에서 접속주소를 localhost:포트 이렇게 호출을 하면 쿠키가 생성되지 않습니다.

setCookie에서의 domain과 접속주소가 같아야 정상적으로 쿠카가 생성됩니다 .

보내주신 코드로 테스트 해보니 domain과 postman의 접속주소를 일치시키니 정상적으로 login과 logout이 되는 것을 확인했습니다.

이부분 참고하시기 바랍니다.

0

Lia

domain 을 127.0.0.1 로설정하고 postman에서도 127.0.0.1:포트로 호출을했습니다. ㅠㅠㅠpostman.png

0

Indie Coder

일단 저도 보내주신 화면과 같이 vscode 내부에 패키지로 설치한 postman을 이용해서 테스트 해보니 logout이 작동하지 않는 현상을 발견했습니다. 이런 현상이 발생하는 이유는 쿠키가 생성은 되지만 원인모를 이유로 logout시 인식을 하지 못하기 때문인 것 같습니다.

이부분의 경우 vscode 내부의 post맨 설정때문인지 혹은 다른 문제인지는 저도 조금 자료를 찾아봐야 할 것 같습니다

괜찮으시면 vscode 패키지로 postman을 사용하지 마시고 별도로 아래 사이트에서 postman을 다운받아서 사용해 보시기 바랍니다.

https://www.postman.com/

 

만약 그래도 안되다면 다시 한번 문의주시기 바랍니다.

 

0

Lia

네. 해결되었습니다. 감사합니다. ^^

0

Indie Coder

일단 이메시지 만으로는 오류를 확인하기 힘들것 같습니다.

코드를 부분적으로 올려주시거나

아니면 아래 이메일로 node_module을 제외한 코드 파일만 압축해서 보내주시면 제가 확인해 보고 알려드리도록 하겠습니다.

참고로 메일로 코드를 보내실 경우 소스코드 때문에 첨부가 안되는 경우가 있는데 이럴경우는 구글 드라이버등에 압축파일을 올리고 그 링크를 보내주시면 되겠습니다.

 

freeseamew@gmail.com

0

Indie Coder

 

보내주신 코드를 분석해 보니 .env파일이 없고, 또 그외에 DB와 통신이 정상적이 않았던 것 같습니다.

회원가입에서도 같은 오류가 나서 authHelper에 error 를 throw하는 부분에 console.log를 대신 넣어 확인해 보니 다음과 같은 오류가 나고 있었습니다.

오류의 내용은 대충 DB와 정상적으로 통신이 이루어 지지 않고 있는 부분인데

/Users/gimgeun-yeong/Works/TEST/fastify_prisma_Test/src/lib/authHelper.ts:13:41

  10 
  11 const duplicateVerifyUser = async (email:string) => {
  12     try{
→ 13         const userCount = await db.user.count(
error: Environment variable not found: DATABASE_URL.
  -->  schema.prisma:10
   | 
 9 |   provider = "sqlite"
10 |   url      = env("DATABASE_URL")

 

우선 보내주신 파일 중에 .env 파일이 없어 DB연결을 못하고 있었고

그래서 .env 파일을 추가하고 DATABASE_URL을 설정하고

DATABASE_URL="file:./dev.db?connection_limit=1&connect_timeout=30"
FIRST_PWD = '1234'
SECRET_KEY = 'my-secret-key'
HASH_ROUND = 10
ACCESS_TOKEN_EXPIRES = '60m'
REFRESH_TOKEN_EXPIRES = '7 days'

다음으로 다음 명령어를 이용해 DB를 마이그레이션하고 난 후

npx prisma migrate dev --name init

서버를 재실행 한 후에는 보내주신것과 같은 오류가 발생하지 않고 정상적으로 로그인이 가능했습니다 .

이부분 참고해서 다시한번 해보시기 바랍니다.

참고로 개발중에서 DB와의 오류를 알기 위해서는 service에서 try catch로 오류를 걸러내는 부분에서 catch에 throw전에 console로그로 error를 확인 할 수 있습니다.

이부분 참고해서 오류를 확인해 보시기 바랍니다.

 

만약 해결되지 않는다면 다시한번 문의 주시기 바랍니다 .

감사합니다.

 

useEffect와 lifecycle문의

0

16

1

Next.js 사전렌더링 이해하기 부분

0

18

1

프론트엔드 학습 수준 문의

0

27

2

useMutation 적용 후 새로운 글 등록시 content가 안보여요

0

28

2

적절한 타입 찾기 React.ChangeEvent<HTMLInputElemen>

0

22

2

모달 관련 질문

0

30

3

리액트 챕터별 코드에서 eslint 설정파일이 없어요

0

42

2

DDD 는 마이바티스와 잘 맞지 않는건가요?

0

44

1

스프링부트 버전 문의드립니다.

0

36

1

lucide react 아이콘 설치

0

36

2

17강 zustand store 서버에서 생성

1

30

1

outDir 옵션 추가 후 컴파일 오류 질문

0

58

1

문의관련 문의

0

37

2

prisma migrate 오류

0

179

3

401 not expired token 에러 메세지는 언제 쓰이나요?

0

266

2

Swagger 문서 접근 권한

0

235

1

앱에 refreshToken을 전송할때 궁금한점이 있습니다.

0

329

2

배포-ubuntu에서 문제

0

244

1

openssl 설치후 적용 안되요

0

357

1

comment 기능

0

193

1

Prisma 환경 설정 질문있어요!

0

247

2

TypeError 관련하여 문의드립니다.

0

293

1

똑같이 따라하고 오류나서 다시해보고 다시해보고 올려주신 코드 확인해봐도 계속 에러가 뜨는대요 ㅠ.ㅠ

0

801

1

강좌의 샘플 프로젝트 파일을 올려주시면 좋을 것 같아요.

0

557

2