[我正在尝试对用户实体文件中的密码进行哈希处理,我从另一个项目复制了代码,该代码在该项目上有效,但是在这个项目上却无效。
在实体中:
@Column()
password: string;
@BeforeInsert()
async hashPassword() {
this.password = 'hashed password';
}
在使用中:
async create(user: DeepPartial<User>) {
const newUser = this.userRepository.create(user);
return this.userRepository.save(newUser);
}
它创建一个用户,但不对密码进行散列。
如果您使用的是Sequelize ORM,我这样做的方法是回到数据库提供程序并在初始化Sequelize模型后将其添加。
export const databaseProviders = [
{
provide: ioc.sequelizeProvider,
useFactory: async () => {
const sequelize = new Sequelize({
dialect: 'mysql',
host: databaseConstants.host,
port: databaseConstants.port,
username: databaseConstants.username,
password: databaseConstants.password,
database: databaseConstants.database,
});
sequelize.addModels([Profile]);
await sequelize.sync();
Profile.beforeSave((profile, options) => {
const hashPassword = crypto.createHmac('sha256', profile.password).digest('hex');
profile.password = hashPassword;
});
return sequelize;
},
},
];