用户登录

定义权限的时候我们可以限制用户可以访问的主题的字段,比如 Post 这种类型的内容里面有 title 字段,还有 status 字段,你可以限制用户只能更新他自己发布的内容的 title 字段,只有通过验证的用户才能更新 Post 里的 status 字段,也就是内容的发布状态字段。这里提到的通过验证,指的就是用某种方式验证了用户的真实有效性。

casl.ability.ts

先打开 casl.ability.ts,在这里定义一下用户权限,可以修改一下 can update Post 这条权限,现在我们要限制一般的用户只能更新内容的 title 字段,定义这条权限的时候可以在主题的后面,再添加一个数组,它里面的值是主题字段,这里用的是 can 定义的权限,所以添加的字段就是允许访问的字段。里面添加一个 title 字段。

这样这条权限的意思就是用户可以更新他自己发布的 Post 这种类型的内容的 title 字段。

下面可以判断一下,user.isVerified,假设在 user 对象里面,这个 isVerified 表示的就是用户是否通过了真实验证。

如果是,可以再添加一条权限,用一下 can,动作是 update,主题是 Post,再添加一个字段,名字是 status,,然后是权限的条件,Post 里的 userId 应该等于 user 的 id 属性的值。

检查权限

打开 post.controller,在里面可以检查一下用户权限,定义一个 canUpdateOwnPostTitle,用一下 ability.can ,动作是 update,主题是 ownPost,字段是 title。

下面再定义一个 canUpdateOwnPostStatus,用一下 ability.can,动作是 update,主题是 ownPost,字段是 status。

在响应的数据里面,添加一个 canUpdateOwnPostTitle,再添加一个 canUpdateOwnPostStatus。

测试

在 http 客户端,可以发送一下这个请求,得到的响应里面,这个 canUpdateOwnPostTitle 是 true,因为用户可以更新自己发布的内容的 title 字段。

canUpdateOwnPostStatus 是 false,因为只有通过验证的用户才能更新他自己发布的内容的 status 字段。

回到项目,新建这个 user 的时候,设置一下 isVerified,对应的值是 true。

再到 http 客户端测试一下,发送一下这个请求,这回得到的响应里面这个 canUpdateOwnPostStatus 就会是 true,因为用户现在的 isVerified 属性的值是 true,所以他就可以更新自己发布的内容的 status 字段的值。

限制访问的字段《 CASL:权限控制 》

统计

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

社会化网络

关于

微信订阅号

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