gpt4 book ai didi

javascript - @nestjs/swagger 没有设置授权 header

转载 作者:行者123 更新时间:2023-12-04 07:15:08 31 4
gpt4 key购买 nike

无法在使用 @nestjs/swagger@5.0.9 的路由中授权因为我不知道t know how to configure the 以正确的方式记录文件,但我找不到 可行在授权官方文档/stackoverflow/github 中回答。
我在 swagger 中偶然发现了 JWT 授权的问题。我正在使用 "@nestjs/swagger": "^5.0.9"从公共(public)路由获取访问 token 后,我将其插入到配置有 .addBearerAuth() 的 swagger ui 字段“授权”中方法,在此版本(5.0.9)中具有此签名

addBearerAuth(options?: SecuritySchemeObject, name?: string)
而不是 it lower version .
我已经在 Postman 中测试了我的 API,并且很容易获得授权,我还创建了一个交叉器,它在路由调用之前打印标题,但不幸的是它只在我调用公共(public)路由时打印它们:/
我只知道 Postman 正在设置一个 Bearer token 并且它会抛出路由,而 swagger 并没有发生类似的事情。
我已经尝试了很多这种配置的组合,但我还没有找到一个解决方案,结果我在我的路由方法中获得了授权,从 swagger 我无法达到它,因为 swagger auth 不是在配置错误或我做错事的情况下设置授权 header 。我想不通。 addBearerAuth 的配置位置较低:
// swagger config
...
const config = new DocumentBuilder()
.setTitle('SWAGGER API')
.setVersion('1.0.0')
.addBearerAuth(
{
// I was also testing it without prefix 'Bearer ' before the JWT
description: `[just text field] Please enter token in following format: Bearer <JWT>`,
name: 'Authorization',
bearerFormat: 'Bearer', // I`ve tested not to use this field, but the result was the same
scheme: 'Bearer',
type: 'http', // I`ve attempted type: 'apiKey' too
in: 'Header'
},
'access-token',
)
.build();
...
我的 Controller 中的路线示例。与 @ApiBearerAuth() 匹配装饰者 Swagger 表示,未经授权就无法使用该方法。
@Get('/some-route')
@ApiBearerAuth()
@UseGuards(JwtAuthenticationGuard)
getData(
@ReqUser() user: User,
): void {
this.logger.warn({user});
}

最佳答案

如果我理解您的问题,您需要在 Controller 中指定您正在使用的不记名 token 。在你的情况下:

// swagger config
...
const config = new DocumentBuilder()
.setTitle('SWAGGER API')
.setVersion('1.0.0')
.addBearerAuth(
{
// I was also testing it without prefix 'Bearer ' before the JWT
description: `[just text field] Please enter token in following format: Bearer <JWT>`,
name: 'Authorization',
bearerFormat: 'Bearer', // I`ve tested not to use this field, but the result was the same
scheme: 'Bearer',
type: 'http', // I`ve attempted type: 'apiKey' too
in: 'Header'
},
'access-token', // This name here is important for matching up with @ApiBearerAuth() in your controller!
)
.build();
...
在你的 Controller 中:
@Get('/some-route')
@ApiBearerAuth('access-token') //edit here
@UseGuards(JwtAuthenticationGuard)
getData(
@ReqUser() user: User,
): void {
this.logger.warn({user});
}

关于javascript - @nestjs/swagger 没有设置授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68808863/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com