NestJS Logo
NestJS 中文文档
v10.0.0
  • 介绍
  • 快速上手
  • 控制器
  • 提供者
  • 模块
  • 中间件
  • 异常过滤器
  • 管道
  • 守卫
  • 拦截器
  • 自定义装饰器
  • 自定义提供者
  • 异步提供者
  • 动态模块
  • 依赖注入作用域
  • 循环依赖
  • 模块引用
  • 懒加载模块
  • 执行上下文
  • 生命周期事件
  • 发现服务
  • 跨平台无关性
  • 测试
迁移指南
API 参考
官方课程
  1. 文档
  2. OpenAPI
  3. 安全性

操作
映射类型

安全性

你可以使用 @ApiSecurity() 装饰器,为特定的控制器或路由处理函数指定所需的安全机制。

@ApiSecurity('basic')
@Controller('cats')
export class CatsController {}

在使用此装饰器前,你需要先通过 DocumentBuilder 添加对应的安全定义:

const options = new DocumentBuilder().addSecurity('basic', {
  type: 'http',
  scheme: 'basic',
})

幸运的是,一些常见的身份验证方案(如 basic 和 bearer)是内置的,你无需像上面那样手动定义。

基础身份验证

要启用基础身份验证,可以使用 @ApiBasicAuth() 装饰器。

@ApiBasicAuth()
@Controller('cats')
export class CatsController {}

然后,通过 DocumentBuilder 添加相应的定义:

const options = new DocumentBuilder().addBasicAuth()

Bearer 身份验证

要启用 Bearer 身份验证,可以使用 @ApiBearerAuth() 装饰器。

@ApiBearerAuth()
@Controller('cats')
export class CatsController {}

然后,通过 DocumentBuilder 添加相应的定义:

const options = new DocumentBuilder().addBearerAuth()

OAuth2 身份验证

要启用 OAuth2,可以使用 @ApiOAuth2() 装饰器,并传入所需的作用域(scopes)。

@ApiOAuth2(['pets:write'])
@Controller('cats')
export class CatsController {}

然后,通过 DocumentBuilder 添加相应的定义:

const options = new DocumentBuilder().addOAuth2()

Cookie 身份验证

要启用 Cookie 身份验证,可以使用 @ApiCookieAuth() 装饰器。

@ApiCookieAuth()
@Controller('cats')
export class CatsController {}

然后,通过 DocumentBuilder 添加相应的定义:

const options = new DocumentBuilder().addCookieAuth('optional-session-id')