【发布时间】:2022-04-05 23:47:04
【问题描述】:
快速提问:
我已经通过 StackOverflow 搜索并没有看到这样的直接问题,而且谷歌似乎没有给出很好的答案。
我正在使用 Nestjs 和 Typeorm,并且正在尝试使用 EventSubscriber() 对密码进行哈希处理。
代码如下: user.subscriber.ts
@EventSubscriber()
export class UserSubscriber implements EntitySubscriberInterface<User> {
private iterations = Number(process.env.PASSWORD_ITERATIONS);
// eslint-disable-next-line @typescript-eslint/ban-types
public listenTo(): Function | string {
return User;
}
public afterLoad(
entity: User,
event?: LoadEvent<User>,
): Promise<any> | void {}
public beforeInsert(event: InsertEvent<User>): Promise<any> | void {
const { password } = event.entity;
const salt = crypto.randomBytes(20).toString('hex');
const hash = crypto
.pbkdf2Sync(password, salt, this.iterations, 32, 'sha512')
.toString('hex');
event.entity.password = [salt, hash].join('$');
}
}
我正在尝试在插入之前对密码进行哈希处理,然后将其设置为用户的密码。很简单的东西。我只是想确保我在这里做的方式是最好的方式。它有效,但我担心像我正在做的那样重置event.entity.password。
任何反馈都将不胜感激,如果这不是这个问题的地方,请告诉我,我会移动它。 :) 谢谢!
【问题讨论】:
标签: passwords nestjs typeorm pbkdf2