猿问

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

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


@ObjectType()

class ShopsEntity {


   @Field()

   name: string;


   @Field()

   rating: string;


   @Field()

   secret: string;

}

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


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


{

  "name": "name",

  "rating": "rating",

  "secret": "secret"

}

常规查询用户将获得:


{

  "name": "name",

  "rating": "rating"

}

有没有一种声明式的方式可以在这里进行财产级安全,或者最好的解决方案是为每个安全级别设置单独的 DTO?


一只甜甜圈
浏览 120回答 1
1回答

梦里花落0921

凭借一流的变压器,您可以使用groups属性仅暴露出某些群体/角色属性:import {Exclude, Expose} from "class-transformer";@Exclude()export class User {    @Expose({ groups: ["admin"] })    secret: string;}关于如何使用ClassSerializerInterceptorwith 组,请参阅以下答案。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答