用户登录

下面可以创建一个守卫,把它放在 auth/modules/jwt/guards 里面,名字是 auth-jwt.guard.ts,文件里面定义一个类,用 @Injectable() 装饰一下,导出一个类,类的名字是 AuthJwtGuard,让它继承一下 AuthGuard 这个守卫,提供一个参数,值是身份验证策略的名字,比如之前我们创建的这个 auth-jwt。

然后打开 auth.controller,在这个控制器里定义一个测试 Jwt 这种身份验证策略用的接口,用 @Post 装饰一下,接口地址是 auth/validate,再用 @UseGuards 装饰器使用一个守卫,用一下 AuthJwtGuard 这个守卫。

处理器的名字是 authValidate,添加一个参数,用 @CurrentUser() 这个装饰器获取到当前用户,也就是身份验证策略的 validate 方法返回的数据。把它交给 user,类型可以先设置成 UserEntity 。

方法里面可以 return 这个 user 。

测试

下面在 Http 客户端测试一下,在用户的下面新建一个请求,名字是验证令牌,请求用的方法设置成 Post,配置一下请求地址,一个基本的地址,加上 auth/validate 。

直接发送一下这个请求,得到的是一个 401 未授权的响应。因为这个接口使用了 Jwt 这种身份验证策略,所以需要在请求的头部里包含用户的令牌。

打开用户登录请求,发送一下这个请求,复制一下得到的这个 token 的值,再回到验证令牌请求,配置一下这个请求的身份验证,在 Auth 的下面,选择 Bearer Token。

把复制的令牌的值粘贴到这个 Token 字段里面,这样就会在请求里面包含一个 Authorization 头部,对应的值是 Bearer 空格,然后是这个 Token 的值。

再发送一下这个请求,验证通过以后,会响应回来一些东西,这里面有用户的 id,name,这里响应回来的这些数据,是服务端解密并且验证了请求里的 Jwt 以后,从 Jwt 里面提取出来的,这些数据是当初我们在签发它的时候自己放进去的。

测试使用 Jwt 身份验证策略《 Nest.js 企业级后端实践:身份验证 》

统计

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

社会化网络

关于

微信订阅号

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