Nestjs RBAC 权限控制管理实践(一)

本文介绍了在NestJS中实现权限控制的实践,从官方的角色控制开始,讨论了AuthGuard和RolesGuard的使用。接着提出了更复杂的nestx权限系统需求,包括自定义角色和多层权限配置。最后,提到了参考的资源如nest-access-control和node-casbin,分析了它们的特点和潜在的集成方案。
摘要由CSDN通过智能技术生成

目前由于在做 Nodejs 构架的迁移, 把原有的 typerx 的后端项目迁移到 NestJS 框架上来, 做到权限管理部分, 特和大家分享下。 项目地址:

typerx

nestx

NestJs 官方角色控制介绍

因为这篇文章主要是对权限管理部分对介绍, 所以暂定已经有了用户身份知识的了解, 若想了解用户登录相关内容, 请参阅其他相关文档。

  1. Guards Guards 是一个注解式的守卫, 他描述了所修饰的控制器的访问限制是什么。他应该实现 CanActivate 这个接口。 Guards 有一个单一的职责就是决定请求是否能被路由处理。 *** 值得注意的是 Guards 处于每个 middleware 之后, 但在 interceptor 和 pipe 之前。**

  2. 在了解权限之前我们需要了解两个概念一个是 Authentication , 一个是 Authorization, 你没看花眼, 是的他们很像, 但是实际上是不一样的。

Authentication 与 Authorization

Authentication 主要是身份检查, 意思就像问你有没身份证(有没登录)-> 401

Authorization 主要是角色识别, 意思就像问你身份证的户口是不是本地的(角色是什么,有权限吗) -> 403。

(官方文档 Authorization guard# 和 Role-based authentication# 是不是有点反掉了呢?) auth.guard.ts

import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { Observable } from 'rxjs';

@Injectable()
export class AuthGuard implements CanActivate {
  canActivate(
    context: ExecutionContext,
  ): boolean | Promise<boolean> | Observable<boolean> {
    const request = context.switchToHttp().getRequest();
    return validateRequest(request);
  }
}
复制代码

roles.guard.ts

import { Inject
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值