admin 模块
admin 模块/api/src/admin是 foolon 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()注解后,也不会再对接口权限进行校验。
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()注解,表示该方法无需进行权限校验。
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.ts的ResponseDto的fail方法对异常进行统一格式化。
可以使用throw直接抛出错误信息,也可以使用NestJS的内置 HTTP 异常抛出错误。
// 抛出错误信息
throw '错误信息'
// 抛出内置HTTP异常
throw new BadRequestException('错误信息', {
cause: new Error(),
description: '错误描述'
})拦截器
拦截器/api/src/admin/transform.interceptor.ts对返回的响应数据进行统一处理。
拦截器使用/api/src/common/class/response.dto.ts的ResponseDto的success方法对响应数据进行统一格式化。
Controller内直接使用return返回响应数据即可。