小编ste*_*own的帖子

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

假设我有一个基本实体 ,ShopsEntity它有一堆字段和一个秘密属性:

@ObjectType()
class ShopsEntity {

   @Field()
   name: string;

   @Field()
   rating: string;

   @Field()
   secret: string;
}
Run Code Online (Sandbox Code Playgroud)

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

因此,在向具有不同身份验证级别的同一端点发出请求后,管理员将得到:

{
  "name": "name",
  "rating": "rating",
  "secret": "secret"
}
Run Code Online (Sandbox Code Playgroud)

常规查询用户将得到:

{
  "name": "name",
  "rating": "rating"
}
Run Code Online (Sandbox Code Playgroud)

是否有一种声明性的方式可以在这里实现属性级安全性,或者最好的解决方案是为每个安全级别提供单独的 DTO?

javascript node.js typescript nestjs class-transformer

3
推荐指数
1
解决办法
5646
查看次数