Skip to content

接口鉴权

基于 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.tsPublic / Permissions 装饰器
src/common/guards/jwt-auth.guard.tsJWT 认证守卫
src/common/guards/permission.guard.tsRBAC 权限守卫
src/system/role/role-permission.service.ts角色权限缓存服务

下一步:

基于 MIT 许可发布 · 由 ❤️ 和 ☕ 驱动 · 支持作者