在 HTTP 客户端,先用管理员的身份在数据库的 post 表里创建一条数据。用 CREATE 创建一条 post 数据,在 CONTENT 后面设置一下数据的具体的值,里面添加一个 content 属性,把它的值设置成 “欢迎来宁皓网学习 SurrealDB”。再添加一个 status 属性,值是 published。
复制一份请求,名字改成“测试用户权限”,请求的头部里已经配置了 NS 还有 DB,身份验证选择 “No Authentication”。执行一段查询,SELECT * FROM post; 执行一下,返回的结果是空白的,因为用户没有权限查看 post 数据表里的数据。
定义数据表权限
复制一份管理员请求,名字改成“定义数据表权限”,写一段查询,定义一般用户对 post 这个数据表的权限。DEFINE TABLE post SCHEMALESS ,定义一下 post 这个表,然后用 PERMISSIONS 设置一下用户在这个表里的权限,可以分别定义 select,create,update 还有 delete 权限。
先用一下 FOR select,定义查询权限。用 WHERE 设置一个条件,条件就是 post 数据记录里的 status 等于 published。也就是用户只能查看 status 的值是 published 的内容数据。
再用一下 FOR create, update, delete NONE,把创建,更新,还有删除权限设置成 NONE。表示用户不能做这些事情。
测试
重新发送一下“测试用户权限”这个请求,这回执行这条查询的时候就有结果了。因为用户有权限查看 stauts 的值是 published 的 post 数据。
再试一下,我们用管理员的身份,修改一下刚才创建的这条 post 数据,把它的 status 属性的值改成 draft。
然后再重新发送一下 “测试用户权限” 请求,这次并没有返回结果,因为数据库里唯一一条 post 数据,它的 status 属性的值并不是 published,所以用户就没有权限查看它。