Nestjs swagger 授权,即使在传递令牌后,JWT 令牌也会返回未经授权的结果

问题描述 投票:0回答:2

我正在使用 JWT 策略进行授权。我使用令牌来验证所有控制器中的用户。在 Auth Bearer Token 中设置令牌后,我成功地在邮递员中获得了所需的响应。 但是在按照下面给出的方式设置令牌后

我收到未经授权的回复。原因一定是,不知何故,我的控制器无法访问令牌。 以下是 swagger 文档的代码。

export function createDocument(app:INestApplication): OpenAPIObject{
const builder = new DocumentBuilder()
    .setTitle(SWAGGER_CONFIG.title)
    .setVersion(SWAGGER_CONFIG.version)
    .addBearerAuth({
        type:"http",
        scheme:'bearer',
        bearerFormat:'JWT',
    
        } ,'access-token')
                        
const options = builder.build();
return SwaggerModule.createDocument(app, options);

}

以下是控制器的示例

@ApiTags("Users")
@Controller('users')
export class UserController {
    @UseGuards(JwtAuthGuard)
    @Get('me')
    @ApiOkResponse({ description:"Successfully returned response"})
    @ApiForbiddenResponse({ description: "Forbidden" })
    async profile(@Req() request, @Res() response){
    some code}

以下是 swagger 路线之一的示例

请告诉我哪里错了 任何帮助将不胜感激

jwt swagger authorization nestjs documentation
2个回答
0
投票

因为你没有发送

jwt
令牌,这取决于你使用的后端框架,我在
NestJS
有过这样的经验,我把
@UseGuards
放在第一位而不是
@Post
,但我应该

@UseGuards()
@Post()
    
decorators are calling from bottom to top
@Decorator3
@Decorator2
@Decorator1
function() {
  //logic
}

0
投票

我有同样的问题,我可以解决这个问题:

https://github.com/nestjs/swagger/issues/98

https://github.com/nestjs/nest/blob/master/sample/11-swagger/src/cats/cats.controller.ts

我试图找出我没有添加的东西是什么。 就我而言,我忘记在受保护的控制器上添加 @ApiBearerAuth() 装饰器。

希望你能找到解决办法。

黑客快乐!

© www.soinside.com 2019 - 2024. All rights reserved.