我正在使用 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}
请告诉我哪里错了 任何帮助将不胜感激
因为你没有发送
jwt
令牌,这取决于你使用的后端框架,我在NestJS
有过这样的经验,我把@UseGuards
放在第一位而不是@Post
,但我应该
@UseGuards()
@Post()
decorators are calling from bottom to top
@Decorator3
@Decorator2
@Decorator1
function() {
//logic
}
我有同样的问题,我可以解决这个问题:
https://github.com/nestjs/swagger/issues/98
和
https://github.com/nestjs/nest/blob/master/sample/11-swagger/src/cats/cats.controller.ts
我试图找出我没有添加的东西是什么。 就我而言,我忘记在受保护的控制器上添加 @ApiBearerAuth() 装饰器。
希望你能找到解决办法。
黑客快乐!