铁哥restful 服务程序是一款免费、开箱即用的 restful 服务程序,简单配置就可以获得所有 restful 接口
一、权限模式
默认情况下,对所有未定义权限的表,restful服务端对表格都有增删改查的权限。
但在right.json5添加mode定义,如下所示:
{
"mode":"strict"
}
定义mode为strict模式,则默认情况,restful服务端对未定义权限的表格,只能查询,不能增加,修改或删除。
二、排除可访问的表
在 right.json5中添加 exclude_table 定义,可以将数据库的某些表设置为不可访问,示例如下:
{
"exclude_table":["right","log"]
}
此时表 right, log 都不可访问(不可增删改查)。记住, exclude_table存放的是数组
三、默认用户属性
定义默认用户属性可以让默认用户可以访问合适的表,也可以测试各个角色对表访问的权限。
在 right.json5 中添加 default_user 定义, 示例如下:
{
"default_user": { "user": "visitor", "vip":0}
}
默认用户属性本身是不起作用的,需要配合角色定义,权限定义来使用
四、定义角色
在 right.json5 中添加 role 来根据用户属性定义角色,如下所示:
{
"default_user": { "user": "visitor", "vip":0},
"role": {
"all": { "user" : ["admin", "user", "visitor"]},
"visitor": {"user": "visitor"}
}
}
此时添加了两个 all, visitor 角色, 其实 all 角色由用户的 user 属性决定,当 user 为 admin, user 或visitor时,用户角色为 all。当用户属性user 为 visitor 时,用户的角色为 visitor 。
五、定义基础权限
在 right.json5 中添加 table 定义, 将需要权限控制的表添加进 table 里,示例如下:
{
"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"
]
}
},
"posts": {
"query": {
"role": [
"all"
]
}
}
}
}
上面定义了查询权限,对数据库表 users, 游客是无法查询的,对于 posts 表, 任何用户都可以查询。
除了定义查询权限,我们可能还需要定义增,改,删的权限。如下所示:
{
"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"
]
},
"insert": {
"role": [
"admin"
]
},
"update": {
"role": [
"user",
"admin"
]
},
"delete": {
"role": [
"admin"
]
}
},
"posts": {
"query": {
"role": [
"all"
],
},
"insert": {
"role": [
"user",
"admin"
]
},
"update": {
"role": [
"user",
"admin"
]
},
"delete": {
"role": [
"admin"
]
}
}
}
}
对 users 表的增加和删除,只有 admin 角色可以操作; 对 users的更改, user, admin 两个角色可以进行。
对 posts 表的增加和更改, user, admin 两个角色可以进行, 删除操作只有 admin 可以进行。
六、存储过程或函数的调用
为了能返回select的数据,一般在mysql中定义的是存储过程,在postgresql中定义的是函数,以下演示了调用函数或存储过程的权限
{
"exclude_fun": [
"my_fun3",
"my_fun4"
],
"function": {
"my_fun1": {
"call": [
"admin",
"user"
],
"params": [
{
"myname": {
"name": "="
}
},
{
"_1": {
"role": "admin"
}
}
]
},
"my_proc1": {
"call": [
"user"
]
}
}
}