我想从返回的 JSON 中排除密码字段。我正在使用 NestJS 和 Typeorm。
在 这个问题 上提供的解决方案对我或 NestJS 都不起作用。如果需要,我可以发布我的代码。还有其他想法或解决方案吗?谢谢。
原文由 Vladyslav Moisieienkov 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想从返回的 JSON 中排除密码字段。我正在使用 NestJS 和 Typeorm。
在 这个问题 上提供的解决方案对我或 NestJS 都不起作用。如果需要,我可以发布我的代码。还有其他想法或解决方案吗?谢谢。
原文由 Vladyslav Moisieienkov 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以像这样覆盖模型的 toJSON 方法。
@Entity()
export class User extends BaseAbstractEntity implements IUser {
static passwordMinLength: number = 7;
@ApiModelProperty({ example: faker.internet.email() })
@IsEmail()
@Column({ unique: true })
email: string;
@IsOptional()
@IsString()
@MinLength(User.passwordMinLength)
@Exclude({ toPlainOnly: true })
@Column({ select: false })
password: string;
@IsOptional()
@IsString()
@Exclude({ toPlainOnly: true })
@Column({ select: false })
passwordSalt: string;
toJSON() {
return classToPlain(this);
}
validatePassword(password: string) {
if (!this.password || !this.passwordSalt) {
return false;
}
return comparedToHashed(password, this.password, this.passwordSalt);
}
}
通过将 plainToClass 的类转换器方法与 @Exclude({ toPlainOnly: true }) 一起使用,密码将从 JSON 响应中排除,但在模型实例中可用。我喜欢这个解决方案,因为它保留了实体中的所有模型配置。
原文由 Francisco J Sucre G 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答2k 阅读✓ 已解决
5 回答2.3k 阅读
2 回答1k 阅读✓ 已解决
3 回答1.3k 阅读
3 回答1.5k 阅读
1 回答1.1k 阅读✓ 已解决
1 回答693 阅读✓ 已解决
我建议创建一个利用 类转换 器库的拦截器:
然后,只需使用
@Exclude()
装饰器排除属性,例如: