用户登录

创建一个守卫可以用它检查用户的权限,比如看一下用户有没有指定的用户角色,在终端用 nest 生成一个守卫,nest generate 一个 guard,名字可以叫 access,放在 core/guards 目录的下面 ..

回到项目,在 UserController 的 update 方法上面,可以用一下这个守卫,名字是 AccessGuard ,这个方法上面还用了一个 AuthGuard,它会要求用户先登录, 注意使用守卫的时候,这个顺序也很重要。

打开这个 AccessGuard 。

守卫里面有个 canActivate 方法,它的作用就是根据一些条件返回 true 或者 false,如果方法返回 true 就放行用户继续让他访问,如果返回 false 就会做出一个 403 的响应,提示没有权限 。

暂时让这个方法 return false。

在这个守卫里再得到请求,添加一个 request,用一下 context 上的 switchToHttp ,接着再用 getRequest,它会返回请求。

如果用户成功登录的话,会在请求里带着 user 属性,它的值就是当前登录的用户对象。

先试一下在控制台上输出 request 里的 user。

测试

打开 Http 客户端,请求一下 User Update,提示 401 没有登录。

请求一下 Auth Login ,使用 王皓 这个用户的身份, 复制一下请求回来的 token , 打开 User Update 请求,在请求里添加一个身份验证, 选择 Bearer token ,把 token 的值粘贴到这里。

再发送一下这个请求,这次又会得到 403 响应,表示没有权限。

打开运行项目开发服务的终端... 用户登录成功,在请求上会添加 user 属性,在 AccessGuard 里面我们把它输出到了控制台上,所以这里你会看到发出请求的 user 。

权限控制守卫(AccessGuard)《 Nest.js 应用框架:权限控制 》

统计

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

社会化网络

关于

微信订阅号

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