接口鉴权
基于 NestJS Guard + Passport 实现的 RBAC 接口权限控制。
工作原理
NestJS 使用 @UseGuards() 装饰器和自定义 AuthGuard 保护路由:
typescript
@UseGuards(AuthGuard("jwt"))
@Controller("system/user")
export class SysUserController {
// 所有接口需要认证才能访问
}权限校验流程
请求到达 → JWT Guard 解析 Token → 获取用户角色
↓
查询角色菜单权限
↓
@Permissions() 装饰器 + PermissionGuard 校验使用方式
页面级权限
通过动态路由控制,前端只加载有权限的菜单页面。
按钮级权限
后端使用 @Permissions() 自定义装饰器标记:
typescript
@Post()
@Permissions('system:user:add')
create(@Body() dto: CreateUserDto) {
return this.userService.create(dto);
}核心文件
| 文件 | 作用 |
|---|---|
src/common/decorators/auth.decorator.ts | Public / Permissions 装饰器 |
src/common/guards/jwt-auth.guard.ts | JWT 认证守卫 |
src/common/guards/permission.guard.ts | RBAC 权限守卫 |
src/system/role/role-permission.service.ts | 角色权限缓存服务 |
下一步:
