我有一条路由,需要经过身份验证和未经身份验证的用户使用。我使用@UseGuards(AuthGuard('jwt'))启用身份验证,但它阻止了任何未经身份验证的用户访问路由(正常)。

如何允许未经身份验证的用户也访问路由?

似乎没有可以传递给AuthGuard的选项,以便在我的 Passport 策略中检索它们。

最佳答案

例如,您可以通过扩展现有的 AuthGuard 来创建自己的ojit_a:

export class OptionalJwtAuthGuard extends AuthGuard('jwt') {

  // Override handleRequest so it never throws an error
  handleRequest(err, user, info, context) {
    return user;
  }

}

然后在您的 Controller 上使用此代码:
@UseGuards(OptionalJwtAuthGuard)

09-12 07:01