inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

local serializer, guard

로그인을 해도 LoggedInGuard쪽에서 false값이 나옵니다.

151

GI P

작성한 질문수 16

0


import { createParamDecorator, ExecutionContext } from '@nestjs/common';

//저장된 사용자 정보에 접근 가능
export const User = createParamDecorator(
  (data: unknown, ctx: ExecutionContext) => {
    const request = ctx.switchToHttp().getRequest();
    console.log('사용자', request.user.id);
    return request.user;
  },
);

위에있는것은 로그인을 하게되면 유저의 아이디값을 가져오는데

로그인가드쪽을 보면 여기서는 자꾸 false값이 나옵니다.
다른쪽 로직도 작업하신 코드 그대로 사용을 했는데 왜자꾸 false값만 나올까요....

import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { Request } from 'express';
import { Observable } from 'rxjs';

@Injectable()
export class LoggedInGuard implements CanActivate {
  canActivate(
    context: ExecutionContext,
  ): boolean | Promise<boolean> | Observable<boolean> {
    const request = context.switchToHttp().getRequest() as Request;
    console.log('로그인햇니?????????', request.isAuthenticated());
    return request.isAuthenticated();
  }
}

로그인 유지가 안되는거로 보이기는 하는데 해결법이 있을까요?


node.js express nestjs typeorm

답변 2

0

제로초(조현영)

먼저 서버가 재시작돼서 로그인이 풀리는 게 아닌지 먼저 확인해보시고요.

그게 아니라면 익스프레스 세션/패스포트 설정 문제로 보이는데요. 해당 부분 소스코드 확인해보셔야할 것 같습니다

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

GI P님께서 겪고 계신 문제는 LoggedInGuard를 활용하여 인증 여부를 확인할 때 request.isAuthenticated() 함수가 항상 false를 반환하는 것 같습니다. 이 문제는 주로 세션이 제대로 설정되지 않았거나, 인증 관련 미들웨어가 잘못 설정되면서 발생할 수 있습니다. 아래 몇 가지 체크포인트를 확인해보시기 바랍니다:

  1. 세션 설정 확인: express-session 라이브러리를 사용하여 세션을 설정했는지 확인해보세요. main.ts 혹은 서버 초기화 파일에서 다음과 같이 설정해야 합니다.

    app.use(
     session({
       secret: 'your-secret-key',
       resave: false,
       saveUninitialized: false,
     }),
    );
    
  2. Passport 미들웨어 설정: passport.initialize()passport.session()을 사용하여 Passport를 초기화했는지 확인하세요.

    app.use(passport.initialize());
    app.use(passport.session());
    
  3. 로그인 절차 확인: 사용자가 로그인할 때, passport.authenticate() 함수가 제대로 호출되어 세션이 설정되는지 확인하세요.

  4. UserSerializer 및 Deserializer 확인: serializeUserdeserializeUser에서 사용자의 정보를 세션에 저장하고 설정하는 부분이 올바르게 되어 있는지 확인하세요.

이와 유사한 질문과 해결 방법은 아래 링크에서 자세히 살펴보실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

강의자료는 어디서 다운받나요?

0

110

3

질문 있습니다.

0

294

3

(강의 5:42 질문) providers를 통한 여러 개의 인스턴스 생성 & exports 통한 싱글톤 생성

0

154

2

코드 편집기 확장 프로그램

0

209

2

(질문)비밀 저장소에 접근하기 위한 인증 정보는 로컬 .env에 저장하는지?

0

143

2

(질문)외부 저장소를 통한 환경변수 불러오기 비동기 질문

0

166

3

로그인방법이 고민됩니다.

0

190

2

yarn seed 명령어 실행 시 데이터 삽입 안됨

0

296

4

yarn run db:create 시에 발생하는 데코레이터 오류

0

242

2

npm run db:create 시에 발생하는 decorating 오류

0

231

2

RxJS 디버깅 질문 있습니다.

0

187

3

CacheManager에 대해 질문 있습니다.

0

173

2

로깅은 어떻게 하는게 효율적일까요?

0

222

1

CORS 질문 있습니다.

0

417

2

쿠키 옵션에 대해서 질문 있습니다.

0

184

2

로그아웃 요청이 403 forbidden 에러가 나는데 왜그런걸까요??

0

446

1

401 unauthorized문제

0

285

1

가드의 장점에 대해서 질문이 있습니다.

0

225

1

로그 관리에 대해 질문 있습니다.

0

251

2

CORS 에러 질문 있습니다.

0

317

2

배포 환경 DB 연결 질문 있습니다.

0

410

2

socket io 미 연결 문제 (nest & flutter)

1

1151

3

no elements in sequence 에러 관해서 질문이 있습니다.

0

451

1

NextJS와 NestJS 소켓IO 연결

1

1479

1