gpt4 book ai didi

javascript - NestJS 排除不同用户 Angular 色字段的策略?

转载 作者:太空宇宙 更新时间:2023-11-03 23:13:13 26 4
gpt4 key购买 nike

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

@ObjectType()
class ShopsEntity {

@Field()
name: string;

@Field()
rating: string;

@Field()
secret: string;
}

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

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

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

常规查询用户将得到:

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

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

最佳答案

通过类转换器,您可以使用 groups property仅公开某些组/Angular 色的属性:

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

@Exclude()
export class User {

@Expose({ groups: ["admin"] })
secret: string;
}

有关如何将 ClassSerializerInterceptor 与组一起使用,请参阅以下内容 answer .

关于javascript - NestJS 排除不同用户 Angular 色字段的策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58799209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com