用户登录

在 Node.js 生态里有个 Bcrypt 包,它里面提供了用 Bcrypt 这种方法 Hash 数据还有比对 Hash 数据的方法,在项目里可以安装一下这个包还有这个包的类型定义。

在终端,新建一个标签,然后进入到项目所在的目录,下面给项目安装一个包 npm install 要安装的是 bcrypt,指定一个具体的版本。

注意安装这个包的时候需要编译,所以你要保证在操作系统里已经安装好了编译需要的工具,比如 macOS 用户要安装 XCode 还有相关的命令行工具。

再安装一下跟这个包对应的类型定义,npm install 安装 @types/bcrypt ,把这个包保存在项目的开发依赖里。

回到项目,打开 src/user/user.middleware ,先在文件顶部导入 bcrypt,这个东西来自刚才安装的 bcrypt 这个包。

下面可以在这个模块里定义一个 HASH 密码用的中间件。导出一个函数,名字叫 hashPassword, 把它标记成一个异步函数,然后用箭头函数的写法定义它。这个函数有几个参数,request 类型是 Request,response 类型是 Response,还有 next ,类型是 NextFunction。

在这个函数的主体里面,先从请求的主体里把 password 解构出来。 然后可以设置一下 request.body.password 这个属性的值,把它的值设置成 Hash 之后的密码。 await ,执行 bcrypt.hash,第一个参数是要 hash 的数据,这里就是从请求主体里得到的 password,第二个参数是 Hash 的强度,可以设置成 10。

然后继续下一步。执行一下 next()。 这样在这个中间件后面使用的中间件或者接口的处理器那里,请求主体里的 password 就会是 Hash 之后的密码了。

打开 user.router,在文件顶部,先从 user.middleware 里面,把刚才定义的 hashPassword 解构出来。

然后可以把这个中间件安排在 创建用户 这个接口上使用一下。用一下 hashPassword,把它放在 validateUserData 中间件的后面,这样可以保证在请求的数据里面会包含用户的密码。

在 HTTP 客户端,修改一下 创建用户 请求的主体数据,name 设置成 李四,发送一下这个请求。成功以后再到数据库客户端观察一下数据仓库里的 user 这个数据表。

command + R ,刷新一下界面。 你会发现在 user 这个数据表里多了一条数据记录,就是这个 李四 。注意他的 password 字段的值,现在是经过 Hash 处理过的。

这里为了以后方便演示,我们先复制一下 李四的 password 字段的值,用它替换一下其他几个用户的 password 字段的值,这样这几个用户的密码都会是 123123 。修改之后要保存一下才能生效,按一下 Command + S 。

Hash 用户密码<Bcrypt>《 Node.js 服务端应用开发:注册用户 》

统计

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

社会化网络

关于

微信订阅号

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