Skip to content

admin 模块

admin 模块/api/src/adminfoolon admin 的核心模块,提供了用户、角色、菜单、权限等管理功能。

下面主要介绍该模块的守卫异常过滤器拦截器,用户、角色、菜单、权限等管理功能不再赘述。

守卫

守卫/api/src/admin/admin.guard.ts主要实现了token和权限的校验功能。

token 校验

默认对admin模块的所有接口都进行token校验。

  • 判断用户是否登录
  • 是否修改过密码

无需进行token校验的接口,可在Controller的类名或方法名上添加@Authorize()注解/api/src/common/decorator/authorize.decorator.ts

在类名上添加@Authorize()注解,表示该类内所有接口无需进行token校验。

在方法名上添加@Authorize()注解,表示该方法无需进行token校验。

注意

使用@Authorize()注解后,也不会再对接口权限进行校验。

typescript
import { Authorize } from '@/common/decorator/authorize.decorator'

@Authorize()
@Controller('demo')
export class DemoController {
  @Authorize()
  @Get()
  get() {
    return 'demo'
  }
}

权限校验

默认对admin模块的所有接口都进行权限校验。

无需进行权限校验的接口,可在Controller的类名或方法名上添加@Permission()注解/api/src/common/decorator/permission.decorator.ts

在类名上添加@Permission()注解,表示该类内所有接口无需进行权限校验。

在方法名上添加@Permission()注解,表示该方法无需进行权限校验。

typescript
import { Permission } from '@/common/decorator/permission.decorator'

@Permission()
@Controller('demo')
export class DemoController {
  @Permission()
  @Get()
  get() {
    return 'demo'
  }
}

异常过滤器

异常过滤器/api/src/admin/exception.filter.ts对返回的异常进行统一处理。

异常过滤器使用/api/src/common/class/response.dto.tsResponseDtofail方法对异常进行统一格式化。

可以使用throw直接抛出错误信息,也可以使用NestJS的内置 HTTP 异常抛出错误。

typescript
// 抛出错误信息
throw '错误信息'

// 抛出内置HTTP异常
throw new BadRequestException('错误信息', {
  cause: new Error(),
  description: '错误描述'
})

拦截器

拦截器/api/src/admin/transform.interceptor.ts对返回的响应数据进行统一处理。

拦截器使用/api/src/common/class/response.dto.tsResponseDtosuccess方法对响应数据进行统一格式化。

Controller内直接使用return返回响应数据即可。

Released under the MIT License.