작성
·
465
0
아직은 DB를 붙이기 전인데요,
passport-kakao에서 얻어온 ID를 session에 저장하고,
SessionGuard를 만들어서, 여기까지는 동작합니다.
https://github.com/youngkiu/nestjs-kakaologin/blob/main/src/auth/session.serializer.ts
그런데, serializer에 breakpoint를 잡아도 호출되지 않습니다.
도움 부탁드려요.
답변 3
1
https://github.com/nestjs/nest/issues/1365#issuecomment-494789315
이 사람처럼 Injectable로 만드셔야할 것 같습니다.
0
Subject: [PATCH] Add Injectable decorator on SessionSerializer
---
Index: src/auth/session.auth.guard.ts
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/auth/session.auth.guard.ts b/src/auth/session.auth.guard.ts
--- a/src/auth/session.auth.guard.ts (revision 31224c26135ddd183e9b5b6084a1c5cd30183273)
+++ b/src/auth/session.auth.guard.ts (date 1674003411350)
@@ -5,6 +5,7 @@
export class SessionAuthGuard extends AuthGuard('session') {
async canActivate(context: ExecutionContext) {
const request = context.switchToHttp().getRequest();
+ super.logIn(request);
return this.validateRequest(request);
}
이렇게 하고 해결되었습니다. 몇일 해맸는데 정말 감사합니다.
0
@Injectable()
export class LocalSerializer extends PassportSerializer {
constructor(
private readonly authService: AuthService,
private readonly userRepository: UserRepository,
) {
super();
}
serializeUser(user: User, done: CallableFunction) {
done(null, user.id);
}
async deserializeUser(userId: string, done: CallableFunction) {
return await this.userRepository.findOneOrFail({ id: Number(userId) })
.then(user => done(null, user))
.catch(error => done(error));
}
}
이런 식으로 super까지 하셨나요?
아, 네네. extends 한 경우에는 중간에 들어있는 super같은 것 꼭 호출해주셔야 합니다.