NestJS 更新后 AuthGuard 损坏

问题描述

我有一个使用 jwt 实现身份验证的 nestJS(版本 6)项目。以下配置工作正常:

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 核心和通用模块,因此无法提取身份验证。我的 @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 **

AuthGuard 在第 7 版中的工作方式似乎略有不同。有没有其他人遇到过这个问题并且能够帮助我?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...