inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

AuthGaurd, canActivate관련

454

sghaha

작성한 질문수 6

0

 

안녕하세요 강의를 하며 passport 기능 따라구현하는 중에 막힌곳이 있어서 문의드립니다.

로그인 쪽 개발중 프론트엔드에서 요청을 하면 

canActivate중에 문제가 있는지

401 에러를 뱉습니다.

 

가드가 컨트롤러 앞단에있는 거의 가장 처음 트래픽을 맞이하는 부분이라고 이해만 하고 

canActivate에 대한 이해가 없어서

이부분에서 에러를 뱉어내서 조금 막막하네요

 

어떤 부분을 공부하거나 

찾아봐야 할지 문의드립니다.

 


@Injectable()
export class LocalAuthGuard extends AuthGuard('local') {
async canActivate(context: ExecutionContext): Promise<boolean> {
console.log('가드'); //로그 정상적으로 찍힘
console.log(context); //로그 찍힘
const can = await super.canActivate(context);
console.log(can); //이 로그가 찍히기 전에 401 에러뱉고 끝.
프론트 엔드 응답값은 {"success":false,"code":401,"data":"Unauthorized"}

if (can) {
const request = context.switchToHttp().getRequest();
console.log('login for cookie');
await super.logIn(request);
}

return true;
}
}

express nodejs NestJS TypeORM

답변 3

1

제로초(조현영)

super.canActivate 함수는 AuthGuard('local')의 메서드입니다. 이 부분은 localStrategy에서 validate 메서드 부분을 보셔야 합니다.

https://github.com/ZeroCho/sleact/blob/master/nest-typeorm/src/auth/local.strategy.ts

0

sghaha

해결했습니다

local.strategy.ts에서 super부분을

아래와 같이 하지않고 그냥 super()로 했네요

공식문서랑 강의랑 번갈아 가면서 복붙하다보니 이부분을 놓쳤습니다.

대충 보니 usernameField를 email로 지정하지 않으면 기본적으로 username으로 받아오나봅니다.

constructor(private authService: AuthService) {
super({ usernameField: 'email', passwordField: 'password' });
}

0

sghaha

 

현재 만들어주신 프론트엔드에서 보내는것처럼

로그인을

email, password로 보내는것이 아니라

 

포트스맨으로

username, password로 보내면 정상 작동하는것으로 보입니다.

 

어딘가에 email로 써야 할것을 username으로 쓴것같은 느낌입니다.

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

0

110

3

질문 있습니다.

0

294

3

코드 편집기 확장 프로그램

0

209

2

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

0

143

2

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

0

166

3

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

0

151

2

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

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

start:dev-backup으로 돌리면 핫 리로딩이 되요 정상인가요?

0

319

1