用户登录

先观察一下 user 数据表里的数据记录,你会发现用户的密码现在是明文存储的,就是密码是什么存储的就是什么,这会有很大的安全问题,我们要存储的应该是 Hash 之后的用户密码。

在 TypeOrm 里面,有一种监听器,就是在实体里的一些可以在特定事件发生之后执行的方法,比如插入新的数据,更新数据,删除数据等等,都可以触发执行对应的方法。

在创建新的用户数据记录或者更新用户数据记录的时候可以先 Hash 一下用户的密码,然后再把它存储起来。

Hash 用户密码需要用到一个 Package,在终端,安装一下 bcrypt,保存在项目的依赖里,完成以后再安装一下对应的 Type,npm install 安装 @types/bcrypt,把这个包保存在项目的开发依赖里。

打开 User 实体,在文件的顶部先导入 bcrypt,import * as bcrypt from bcrypt。

然后在实体里添加一个监听器,我想让这个监听器在创建数据记录之前执行,先用一个 @BeforeInsert 装饰器,下面添加一个 async 法,名字是 hashPassword。

方法里面,设置一下 this.password 的值, await,执行 bcrypt 上的 hash 方法,hash 的密码是 this.password,rounds 数可以设置成 12。

在 HTTP 客户端配置一个请求,请求创建一个新的用户。

得到的响应里面会包含用户的 password 属性的值,这回它的值就会是 Hash 之后的用户密码了。

再回到数据库客户端,你会发现刚才创建的用户的 password 的值,会是 Hash 之后的。

Hash 用户密码(使用 Listeners 监听器)《 Nest.js 应用框架:用户 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点