Hash 用户的密码可以使用 Bcrypt 这个包提供的功能,在终端,先给项目安装一下这个包,执行 npm install 安装一下 bcrypt。
完成以后,再安装一下这个包的类型定义,执行 npm install,安装的是 @types/bcrypt ,用一个 --save-dev 选项,把它保存在项目的开发依赖里。
回到项目,打开用户实体的订阅者,user.entity.subscriber ,在文件的顶部,先导入 bcrypt 这个包里提供的所有东西,添加一个前缀,叫 bcrypt 。
然后在 beforeInsert 这里,设置一下 event.entity.password 这个属性的值,等于 await,用一下 bcrypt.hash ,把 event.entity.password 交给这个方法,再把方法的第二个参数设置成 12 。
在 user 数据表里插入新的数据记录之前,会执行这个 beforeInsert 方法,在这个方法里我们用 bcrypt 提供的 hash 方法 hash 了一下用户的密码。
测试
在 Http 客户端,重新发送一下这个创建用户请求,然后再回到数据库客户端观察一下,你会发现,刚刚创建的这个用户的 password 字段的值,就是 hash 之后的用户密码。
现在的问题是我们在 user 数据表里可以插入同名的用户数据,下面我们再解决一下这个问题。