用户登录

应用的管理员可以删除内容,内容的作者可以删除他自己发布的内容。打开 update-post.policy ,复制一下这个 polices 目录,粘贴到 post/modules/destroy 这个目录里面。打开 polices 下面的这个文件,改一下文件的名字,换成 delete-post.policy.ts。修改一下这个权限策略,action 设置成 Action.delete。

然后打开 post-destroy.controller 这个控制器,在这个删除内容接口的上面,用 @UsePolicies 装饰一下,把 deletePostPolicy 里的东西放进来。下面再使用两个守卫,@UseGuards,添加一个 AuthJwtGuard,再添加一个 PolicyGuard 。

测试

在 Http 客户端测试一下,先打开创建内容,发送一下这个请求,新创建的这个内容,它的 id 是 3,内容作者的 id 是 7。

回到 Http 客户端,打开删除内容请求,请求地址设置成 posts/3,发送一下这个请求,成功删除了这个内容。说明当前用户有权限删除这个内容。

再打开创建内容请求,发布一下,新创建的这个内容的 id 是 4 ,打开删除内容请求,地址改成 posts/4,然后打开用户登录小雪,复制一下小雪的令牌,回到删除内容请求,修改一下身份验证,把小雪的令牌粘贴到这个 Token 里面,发送一下这个请求,得到了一个 403 的异常响应,说明小雪对这个内容没有删除权限。

打开用户登录请求,复制一下王皓的令牌,他是应用的管理员,回到删除内容请求,修改一下身份验证 Token 的值,换成王皓的令牌。发送一下请求,成功删除了这个内容,因为当前用户是应用的管理员,他可以对任何资源做任何事情。

设置删除内容接口的权限《 Nest.js 企业级后端实践:权限控制 》

统计

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

社会化网络

关于

微信订阅号

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