首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在nestjs swagger中是否支持cookie身份验证?

在nestjs swagger中是否支持cookie身份验证?
EN

Stack Overflow用户
提问于 2020-10-15 05:27:19
回答 2查看 950关注 0票数 2

我想在我的swagger文档中包含cookie授权,但是我似乎没有取得任何进展。

根据https://docs.nestjs.com/openapi/security的说法,似乎在nestjs-swagger中支持cookie auth。

然而,根据Swagger UI和编辑器的https://swagger.io/docs/specification/authentication/cookie-authentication/,cookie身份验证不支持“试用”

我不确定我是不是错误地实现了cookie身份验证,或者只是不支持它。

Bellow是我正在尝试的实现。

在DocumentBuilder()中:

代码语言:javascript
复制
.addCookieAuth('authCookie')

在控制器中:

代码语言:javascript
复制
@ApiCookieAuth()

我尝试将我的cookie名称'authCookie‘添加到@ApiCookieAuth()标记中。我也尝试过使用.addCookieAuth('authCookie', {type: 'apiKey',in: 'cookie'})

无论我如何尝试,我都会得到一个JWT令牌未找到错误。我知道当我使用postman时,这是可行的,所以我很困惑为什么我会得到这个问题。

EN

回答 2

Stack Overflow用户

发布于 2021-03-20 18:19:18

基本上,您可以只使用

代码语言:javascript
复制
  SwaggerModule.setup('swagger', app, document, {
    swaggerOptions: {
      requestInterceptor: (req) => {
        req.credentials = 'include';
        return req;
      },
    },
  });

请注意,手动设置cookie值不会对Fetch请求产生任何影响。

它与swagger-client相关,与NestJs无关

票数 0
EN

Stack Overflow用户

发布于 2021-09-10 05:00:28

我的一个独到之处就是在DocumentBuilder中使用这样的options

代码语言:javascript
复制
.addCookieAuth('authCookie', {
  type: 'http',
  in: 'Header',
  scheme: 'Bearer'
})

和这样的装饰器在控制器中:

代码语言:javascript
复制
@ApiCookieAuth()

如果您需要指定cookie名称,可以使用securityName参数指定应用程序中cookie 的名称

代码语言:javascript
复制
.addCookieAuth(cookieName?: string, options?: SecuritySchemeObject, securityName?: string)

在指定securityName之后,还需要将其提供给contoller装饰器:

DocumentBuilder

代码语言:javascript
复制
.addCookieAuth('auth-cookie', {
  type: 'http',
  in: 'Header',
  scheme: 'Bearer'
},
'in-app-cookie-name')

在控制器中:

代码语言:javascript
复制
@ApiCookieAuth('in-app-cookie-name')

这个解决方案是在手动将JWT插入到swagger auth输入之后,仅使用。如果我没弄错- SwaggerUI不支持自动插入cookie字段。

link with this issue on GitHub

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64361738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档