为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只甜甜圈 2021-12-23 15:37:47
假设我有一个基本实体,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?
查看完整描述

1 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

凭借一流的变压器,您可以使用groups属性仅暴露出某些群体/角色属性:


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


@Exclude()

export class User {


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

    secret: string;

}

关于如何使用ClassSerializerInterceptorwith 组,请参阅以下答案。


查看完整回答
反对 回复 2021-12-23
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信