用户登录

打开 auth.middleware,找到在它里面定义的 validateLoginData 这个中间件,修改一下它。这里我们可以在请求主体里添加用户相关的数据,签发令牌的时候会用到用户数据。

设置一下 request.body,在上面添加一个 user 属性,对应的值让它等于 user,这个 user 是上面用 getUserByName 从数据仓库里查询出来的。

打开 auth.controller,在文件的顶部,把 auth.service 里面定义的 signToken 导入进来。 然后修改一下 login 这个函数,先准备一下数据,需要的是请求主体里的 user,这个 user 属性是在 validateLoginData 中间件里添加到请求主体上的。可以进一步解构这个 user 对象,需要的是 id 还有它里面的 name。

下面可以再准备一个签发令牌的时候需要的数据,添加一个 payload,它的值是一个对象,里面有 id 还有 name 这两个属性,这两个属性的值就是用户的 ID 还有用户名。

去掉做出的响应,用一组 try,catch,把要做的事情放在 try 区块里,要签发令牌。添加一个 token,执行一下 signToken 这个函数,它是我们之前在 auth.service 里定义的,使用它的时候要提供一个选项参数,这个参数里面可以添加一个 payload 属性,对应的值就是要往签发的令牌里放的数据。

有了令牌,再做出一个响应,用一下 response.send ,响应一个对象,里面有 id,name 还有这个 token。

再处理一下发生的异常,在 catch 区块里,执行一下 next() 带着 error,这样会把异常交给应用默认的异常处理器去处理。

在打开 HTTP 客户端,找到 用户登录 这个请求,在请求里配置的数据就是要登录的用户还有他的密码,这个用户的用户名是 李白。 发送一下这个请求,得到的响应里面,会有用户的 id 号,用户的名字,还有服务端给这个用户签发的令牌。

签发 JWT 令牌《 Node.js 服务端应用开发:验证身份 》

统计

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

社会化网络

关于

微信订阅号

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