NestJS哈希密码

问题描述 投票:0回答:1

[我正在尝试对用户实体文件中的密码进行哈希处理,我从另一个项目复制了代码,该代码在该项目上有效,但是在这个项目上却无效。

在实体中:

 @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);
  }

它创建一个用户,但不对密码进行散列。

javascript hash passwords nestjs
1个回答
0
投票

如果您使用的是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;
        },
    },
];
© www.soinside.com 2019 - 2024. All rights reserved.