DbRESTFul中的API支持权限控制,其权限判断基于用户角色对指定表的查询/插入/更新/删除
操作授权。
##权限相关基础表
用户表(User) 字段称 | 类型 | 是否为空 | 说明 --------| ------| --------| --------- id | int | 否 | 用户的标识 roleId | int | 是 | 用户所属角色 …… | …… | …… | 其它字段
角色表(Role) 字段称 | 类型 | 是否为空 | 说明 --------| ------------- | --------| --------- id | int | 否 | 角色的标识 name | varchar(31) | 否 | 角色名称 …… | …… | …… | 其它字段
权限表(ApiPermission) 字段称 | 类型 | 是否为空 | 说明 ------------ | ------------- |:-------:| --------- id | int | 否 | 权限的标识 name | varcahr | 否 | 权限的名称 roleId | int | 否 | 权限的标识 type | smallint | 否 | 权限操作类型(0:table or view, 1:store procedure, 2:configured code invocation) object | varchar(31) | 否 | 待操作对象(table, view, sp, cci) flag | int | 是 | 允许操作的二进制值(请参考说明)
说明
flag
为权限操作标识,判断的时候,通过&
即可,如:01010
表示可插入
与可删除
00001
:selectable
00010
:insertable
00100
:updatable
01000
:deletable
10000
:executable
type
:- TableOrView = 0
- ConfiguredCodeInvocation = 1
- StoreProcedure = 2
##权限判断 当用户非法访问时,返回信息如下:
{
"hasError": true,
"errorMessage": "此操作无权限!",
"data": null
}
##权限编辑
获取角色
https://localhost:<port>/api/<version>/permission
get
请求参数:
{
'id': 21 // 用户的Id,可为不指定,如果指定,则加载用户所属角色,如果不指定,则加载所有的角色。
}
请求返回数据: json
格式
{
"hasError": false, // 如果是true,说明操作有错误
"errorMessage": null, // 如果hasError为true,则errorMessage为错误信息
"data": [{}] // Role 中的角色,如果没指定用户的Id,则所有用户角色都加载进来
}
创建角色
https://localhost:<port>/api/<version>/permission
post
请求参数:
{
'name': '超级管理员' // 角色名称
}
请求返回数据: json
格式
{
"hasError": false, // 如果是true,说明操作有错误
"errorMessage": null, // 如果hasError为true,则errorMessage为错误信息
"data": 1 // 执行影响行数
}
设置用户的角色
https://localhost:<port>/api/<version>/permission
put
请求参数:
{
'id': 21, // 用户的Id
'roleId':2 // 角色
}
请求返回数据: json
格式
{
"hasError": false, // 如果是true,说明操作有错误
"errorMessage": null, // 如果hasError为true,则errorMessage为错误信息
"data": 1 // 执行影响行数
}
给角色授权
https://localhost:<port>/api/<version>/permission
patch
请求参数:
{
'roleId': 21, // 角色Id
'tableName':'order', // 表名
'selectEnabled': true, // 是否能查询
'insertEnabled': true, // 是否能插入
'updateEnabled': true, // 是否能更新
'deleteEnabled': true // 是否能删除
}
请求返回数据: json
格式
{
"hasError": false, // 如果是true,说明操作有错误
"errorMessage": null, // 如果hasError为true,则errorMessage为错误信息
"data": 1 // 执行影响行数
}
说明:
这个操作总是拿
roleId
与tableName
去查询,如果已有记录,则更新selectEnabled
等4个基本操作的权限,否则,创建一条新的授权记录。