Nest.js 中的可选身份验证 @nestjs/passport
Optional authentication in Nest.js with @nestjs/passport
我有一条路由需要经过身份验证和未经身份验证的用户使用。我使用 @UseGuards(AuthGuard('jwt'))
启用身份验证,但它会阻止任何未经身份验证的用户访问路由(正常)。
如何允许未经身份验证的用户也访问路由?
似乎没有选项可以传递给 AuthGuard
以便在我的护照策略中检索它们。
您可以创建自己的AuthGuard
,例如通过扩展现有的:
export class OptionalJwtAuthGuard extends AuthGuard('jwt') {
// Override handleRequest so it never throws an error
handleRequest(err, user, info, context) {
return user;
}
}
然后在你的控制器上使用这个:
@UseGuards(OptionalJwtAuthGuard)
我有一条路由需要经过身份验证和未经身份验证的用户使用。我使用 @UseGuards(AuthGuard('jwt'))
启用身份验证,但它会阻止任何未经身份验证的用户访问路由(正常)。
如何允许未经身份验证的用户也访问路由?
似乎没有选项可以传递给 AuthGuard
以便在我的护照策略中检索它们。
您可以创建自己的AuthGuard
,例如通过扩展现有的:
export class OptionalJwtAuthGuard extends AuthGuard('jwt') {
// Override handleRequest so it never throws an error
handleRequest(err, user, info, context) {
return user;
}
}
然后在你的控制器上使用这个:
@UseGuards(OptionalJwtAuthGuard)