AuthGuard сломан после обновления NestJS
У меня есть проект NestJS (версия 6), в котором реализована аутентификация с использованием jwt. Следующая конфигурация работала нормально:
package.json
...
“@nest-modules/mailer”: “^1.1.3",
“@nestjs/common”: “^6.6.7",
“@nestjs/core”: “^6.6.7",
“@nestjs/jwt”: “^6.1.1",
“@nestjs/passport”: “^6.1.0",
“@nestjs/platform-express”: “^6.6.7",
...
jwt strategy file
@Injectable()
export class JwtBearerStrategy extends PassportStrategy(Strategy) {
constructor(
private readonly sessionService: SessionService,
private readonly userRepository: UsersRepository
) {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: SESSION_SECRET_KEY
});
}
public async validate(session: Session) {
const user = await this.userRepository.findByUsername(session.user.username);
if (!user) {
throw new UnauthorizedException();
}
delete user.password;
return user;
}
}
End points are protected as follows
@Controller('/session')
export class SessionController {
constructor(
private readonly sessionService: SessionService,
private readonly userRepository: UsersRepository
) {}
@Get()
@UseGuards(AuthGuard())
public async getCurrentUser(@CurrentUser() currentUser: User) {
return currentUser;
}
Однако, поскольку я обновил ядро nestJs и общие модули, я не могу извлечь файл Authenticate. Мой
@CurrentUser
декоратор не может найти объект пользователя по запросу. Модули гнезд были обновлены следующим образом:
...
"@nestjs/common": "^7.6.15",
"@nestjs/core": "^7.6.15",
"@nestjs/jwt": "^7.2.0",
"@nestjs/microservices": "^7.6.15",
"@nestjs/passport": "^7.1.5",
"@nestjs/platform-express": "^7.6.15",
...
А теперь мой
@UseGuards
декоратор выдает эту настраиваемую ошибку:
[CurrentUser Decorator]: No user found on request
No user objet found on request
* Please ensure Passport Module is configured correctly
* Ensure that the controller, or method is using @UseGuards(AuthGuard())
** see docs/auth.md for more informaion **
Похоже, что в версии 7 AuthGuard работает несколько иначе. У кого-нибудь еще была эта проблема, и может ли он мне помочь?