NestJS策略用于排除不同用户角色的字段?

假设我有一个基础实体ShopsEntity,它具有许多字段以及一个秘密属性:

@ObjectType()
class ShopsEntity {

   @Field()
   name: string;

   @Field()
   rating: string;

   @Field()
   secret: string;
}

除非用户具有通过Nest Access Control定义的特定角色,否则我不希望将secret属性序列化(该模块仅允许将RoleGuard放置在解析程序本身上,这意味着我需要每个角色使用不同的路由角色)。

因此,在对具有不同身份验证级别的同一端点的请求之后,管理员将获得:

{
  "name": "name","rating": "rating","secret": "secret"
}

和常规查询用户将获得:

{
  "name": "name","rating": "rating"
}

这里是否有一种声明性的方式可以进行属性级别的安全性,还是针对每个安全级别具有单独的DTO的最佳解决方案?

zk79281988 回答:NestJS策略用于排除不同用户角色的字段?

使用class-transformer,您可以使用groups property来仅公开某些组/角色的属性:

import {Exclude,Expose} from "class-transformer";

@Exclude()
export class User {

    @Expose({ groups: ["admin"] })
    secret: string;
}
本文链接:https://www.f2er.com/3125117.html

大家都在问