Que*_*n3r 9 javascript node.js typescript typeorm nestjs
我使用带有 TypeORM 的 NestJs 创建了一个 REST API。基本上这是我的用户实体
@Entity('User')
export class User extends BaseEntity {
@PrimaryGeneratedColumn()
public id: number;
@Column({ unique: true })
public username: string;
public passwordHash: string;
}
Run Code Online (Sandbox Code Playgroud)
当从数据库中获取用户时,敏感的密码信息也会被返回。但我只需要登录过程的密码字段。因此,在调用登录服务时,我将数据库用户的密码哈希值与客户端提供的密码进行比较。我永远不想将密码信息返回给客户端。
由于您可以想象从数据库中获取用户的情况经常发生,因此您必须经常从用户对象中删除密码信息。
假设您有一个组实体并且它们之间存在关系。在获取与组相关的用户时,您还必须注意组域中的敏感数据。
也许一些用户深深地嵌套在一个大 SQL 查询语句返回的对象中。有没有办法可以“隐藏”某些字段?打电话时,this.usersRepository.find()我会得到一个用户列表,每个用户都有一个id和一个username字段,但没有一个passwordHash字段。这会让事情变得更容易,因为我只需要在我的signIn流中获取哈希字段。
Kim*_*ern 20
只需将该select: false选项添加到列定义中即可。有了它,除非通过 明确添加addSelect,否则不会选择该列,请参阅文档。
@Entity()
export class User {
@Column({select: false})
password: string;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3691 次 |
| 最近记录: |