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
返回响应数据即可。