在NestJS中实现基于权限的访问角色

问题描述 投票:0回答:1

我正在开发一个 NestJS 项目,该项目需要基于权限的访问控制。

涵盖了大部分功能。用户的权限与每个请求相关联。路由(或控制器)用权限名称进行修饰。如果用户没有在路由/控制器上定义的权限,则访问将被拒绝。这部分是通过权限保护来解决的。

我要解决的案例是服务层基于权限的访问。普通用户不允许访问数据库中的所有用户。

我的第一次尝试是在服务方法(例如 findAll)中检查用户的权限,如果只允许用户读取自己的实体,我将只返回该用户。否则,返回所有实体。但是,为了使其工作,我必须将 userId 和用户的权限从控制器传递到服务层。有没有更好的方法来解决这个问题?

permissions nestjs authorization rbac
1个回答
0
投票

尝试类似的事情

import { SetMetadata } from '@nestjs/common';

// your key
export const REQUIRED_PERMISSIONS_KEY = 'required-xxx-key';

export const RequirePermissions = (permissions: string[]) => {
  return SetMetadata(REQUIRED_PERMISSIONS_KEY, permissions);
};

然后使用,例如在控制器中的

list
端点。

@RequirePermissions([NotificationsPermissions.POC_ACCESS])
@Get()
async list(
© www.soinside.com 2019 - 2024. All rights reserved.