铁哥restful 服务程序是一款免费、开箱即用的 restful 服务程序,简单配置就可以获得所有 restful 接口
延续上一节《最简洁的权限控制》,这一节是说明对每个字段的访问控制
一、可查询字段和记录
在 right.json5中,编辑表users中 query 的信息,添加 column , return_column, row 配置。
column是限制是哪些角色可以取哪些字段,下面的配置是只有角色 admin 可以取到表 users 中的 password 字段。
column也可在 insert和update配置中使用,表示用户角色可插入和更新的字段。
return_column 是限制可返回字段,其中能返回记录里的 mobile字段的条件为:记录中的 id 与用户属性中的 id 相等,或者 用户角色为 admin (没有记录中的字段参与的条件,使用 下划线加数字来表示)。
row 是查询条件限制,只有用户属性中的id 与字段 id 的值相等,或者角色为 admin 时,才会返回该条记录。程序内部会根据 row 生成 where 语句。
row的条件也可使用在 insert, update 和 delete 里,限制用户可插入、更新和删除的记录条件。
{
"default_user": {
"user": "visitor",
"vip": 0,
"id": 0
},
"role": {
"all": {
"user": [
"admin",
"user",
"visitor"
]
},
"admin": {
"user": "admin"
},
"common": {
"user": "user"
},
"visitor": {
"user": "visitor"
}
},
"table": {
"users": {
"query": {
"role": [
"user",
"admin"
],
"column": {
"password": [
"admin"
]
},
"return_column": {
"mobile": [
{
"id": {
"id": "="
}
},
{
"_1": {
"role": "admin"
},
}
]
},
"row": [
{
"id": {
"id": "="
},
},
{
"_1": {
"role": "admin"
},
}
]
}
}
}
}
二、可插入字段
在表 posts 中的 insert 信息里配置 column 和 row,下面示例表示:
create_at 字段只有admin角色可以插入,用户不可插入。
只有记录中的 user_id 和 用户属性的 id 相等时,才可以插入此记录。
{
"default_user": {
"user": "visitor",
"vip": 0,
"id": 0
},
"role": {
"all": {
"user": [
"admin",
"user",
"visitor"
]
},
"admin": {
"user": "admin"
},
"common": {
"user": "user"
},
"visitor": {
"user": "visitor"
}
},
"table": {
"posts": {
"insert": {
"role": [
"user",
"admin"
],
"column": {
"create_at": [
"admin"
]
},
"row": [
{
"user_id": {
"id": "="
},
},
{
"_1": {
"role": "admin"
},
}
]
}
}
}
}
三、可更新字段和记录
在 users 表中 update信息里配置 column和row, 下面的示例表示:
只有角色为 admin 的用户才可以更新 password和mobile字段,其它字段不受影响。
只有记录的id与用户属性中的id相等,或者用户角色为 admin 时才能更新此记录。
{
"default_user": {
"user": "visitor",
"vip": 0,
"id": 0
},
"role": {
"all": {
"user": [
"admin",
"user",
"visitor"
]
},
"admin": {
"user": "admin"
},
"common": {
"user": "user"
},
"visitor": {
"user": "visitor"
}
},
"table": {
"users": {
"update": {
"role": [
"user",
"admin"
],
"column": {
"password": [
"admin"
],
"mobile": [
"admin"
],
},
"row": [
{
"id": {
"id": "="
},
},
{
"_1": {
"role": "admin"
},
}
]
}
}
}
}
四、可删除记录
在 posts 中配置 delete 信息,下面示例表示:
只有记录的user_id与用户属性中的id相等,或者用户角色为 admin 时才能删除此记录。
{
"default_user": {
"user": "visitor",
"vip": 0,
"id": 0
},
"role": {
"all": {
"user": [
"admin",
"user",
"visitor"
]
},
"admin": {
"user": "admin"
},
"common": {
"user": "user"
},
"visitor": {
"user": "visitor"
}
},
"table": {
"posts": {
"delete": {
"role": [
"user",
"admin"
],
"row": [
{
"user_id": {
"id": "="
},
},
{
"_1": {
"role": "admin"
},
}
]
}
}
}
}
条件中的逻辑关系操作支持所有SQL里等价的操作,比如 in, not in, !=, >, <, like 等等,详细描述请看下一节(权限文件逻辑操作符)。