用户登录

验证了用户提供的登录凭证以后,如果有效,就可以给用户签发一个 JWT。在 AuthService 里面添加一个签发 JWT 用的方法,名字可以叫 signToken,接收一个 data 参数,类型可以去定义一下。

在 Auth 模块里面添加一个文件,auth.interface.ts。在这个文件里,export 一个 interface 导出一个接口,名字叫 JwtPayload,接口有一个 id 属性,类型是 number,还有一个 name 属性,类型是 string。

回到 AuthService,signToken 的 data 参数值的类型设置成 JwtPayload。

方法 return 的东西就是签发的 JWT ,这里需要用到 Jwt 模块里的一个服务,把它作为依赖注入进来,在类的 constructor 里面,添加 private readonly jwtService.. 它是 JwtService,这个 JwtService 来自之前我们安装的 @nestjs/jwt 模块。

signToken 方法 return 的是 this.jwtService 用一下 sign 这个方法签发一个 JWT ,给它提供一个 payload ,这里就是 data 的值。

然后编辑一下 login 方法,先从用户实体里面,把用户的 id 属性拿出来, 下面再添加一个 payload,签发 JWT 的时候需要提供一个 payload,这个 payload 就是包含在 JWT 里的数据,我们可以把用户的 id 号,还有用户的名字放在 JWT 里面。

再添加一个 token,它的值就是生成的 JWT,用一下 this.signToken,把 payload 交给这个方法。

最后做出一个响应,响应的数据里面,可以放入在 payload 里的东西,这里就是用户的 id 还有 name,再加上一个 token。

测试

打开 HTTP 客户端,配置一个请求,用 POST 方法请求 auth/login 这个地址,请求里带着用户名还有密码。

用户提供的登录信息有效,通过了验证,就会给用户签发一个 JWT ,同时它会作为响应数据里的一部分,这个 JWT 就是响应里的这个 token 属性的值。

签发 JWT(jwtService.sign)《 Nest.js 应用框架:身份验证 》

统计

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

社会化网络

关于

微信订阅号

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