限与角色(5)数据库结构
好久没发文章了,实在太忙了,有时有点时间,博客园还连不上,写了一些文章也传不上来,打包上传报系统忙,
表
权限类型
表名:power
说明:存放权限类型
表结构:
字段名 |
数据类型 |
设定 |
说明 |
power_id |
string |
主键 |
权限编号 |
number |
int |
|
使用2的平方法数 |
remark |
string |
|
备注 |
例:
sort |
number |
remark |
read |
1 |
读取查看 |
write |
2 |
写入,保存 |
delete |
4 |
删除 |
create |
8 |
建立 |
edit |
16 |
编辑 |
run |
32 |
运行、执行 |
stop |
64 |
终止 |
pause |
128 |
中止 |
admin |
256 |
管理 |
all |
512 |
全部 |
none |
1024 |
无 |
award |
2048 |
授予 |
expand_1 |
|
对应到expand_1表的权限,如时间域 |
expand_2 |
|
对应到expand_2表的权限,如IP域 |
expand_3 |
|
对应到expand_3表的权限,如临时授权域 |
资源列表
表名:resource
说明:存放用户可访问的所有资源
表结构:
字段名 |
数据类型 |
设定 |
说明 |
resource_id |
string |
主键 |
资源编号 |
resource_sort |
string |
|
资源种类 |
remark |
string |
|
备注 |
例:
resource_id |
resource_ sort |
remark |
A_A |
UI |
A窗体,A控件 |
A_B |
UI |
A窗体,B控件 |
A_C |
UI |
A窗体,C控件 |
用户列表
表名:users
说明:存放用户信息
表结构:
字段名 |
数据类型 |
设定 |
说明 |
user_id |
string |
主键 |
用户编号 |
password |
string |
|
口令 |
remark |
string |
|
备注 |
例:
user_id |
password |
remark |
X |
123 |
|
Y |
123 |
|
Z |
123 |
|
角色
表名:role
说明:存放角色信息
表结构:
字段名 |
数据类型 |
设定 |
说明 |
role_id |
string |
主键 |
角色编号 |
|
|
|
|
remark |
string |
|
备注 |
例:
role_id |
|
remark |
role_1 |
|
|
role_2 |
|
|
role_3 |
|
|
角色对应的权限
表名:role_power
说明:存放角色信息
表结构:
字段名 |
数据类型 |
设定 |
说明 |
role_id |
string |
主键 |
|
power_id |
string |
|
|
remark |
string |
|
备注 |
例:
role_id |
power_id |
remark |
role_1 |
run |
|
role_1 |
edit |
|
role_2 |
run |
|
role_3 |
run |
|
role_1 |
read |
|
role_3 |
edit |
|
角色对应的用户
表名: role_user
说明:
表结构:
字段名 |
数据类型 |
设定 |
说明 |
role_id |
string |
主键 |
|
user_id |
string |
|
|
remark |
string |
|
备注 |
例:
role_id |
resource _id |
remark |
role_1 |
x |
|
role_1 |
y |
|
role_2 |
x |
|
role_3 |
x |
|
role_1 |
z |
|
role_3 |
y |
|
角色对应的资源
表名:role_resource
说明:
表结构:
字段名 |
数据类型 |
设定 |
说明 |
role_id |
string |
主键 |
|
resource_id |
string |
|
|
remark |
string |
|
备注 |
例:
role_id |
resource _id |
remark |
role_1 |
A_A |
|
role_1 |
A_B |
|
role_2 |
A_A |
|
role_3 |
A_C |
|
role_1 |
A_C |
|
role_3 |
A_B |
|
关系图
视图
用户可操作的资源视图
user_resource
SELECT TOP 100 PERCENT dbo.users.user_id, dbo.users.password, dbo.role_user.role_id, dbo.role_resource.resource_id, dbo.role_power.power_id FROM dbo.users INNER JOIN dbo.role_user ON dbo.users.user_id = dbo.role_user.user_id INNER JOIN dbo.role_resource ON dbo.role_user.role_id = dbo.role_resource.role_id INNER JOIN dbo.role_power ON dbo.role_resource.role_id = dbo.role_power.role_id ORDER BY dbo.users.user_id, dbo.role_resource.resource_id |
存储过程
得到指定用户对资操作列表
get_userResource
--得到指定用户对资操作列表
create procedure get_userResource @usname nvarchar(50),--用户名 @psw nvarchar(50),--口令 @scr nvarchar(50)='' --资源名,可以不传该参数,如果不传,将返回所有的资源 as
if @scr='' begin select * from user_resource where user_id=@usname and password=@psw end else begin select * from user_resource where user_id=@usname and password=@psw and resource_id=@scr
end go |
-- x用户的全部资源权限列表 get_userResource 'x','123'
go
-- x用户的对'A_A'资源权限列表 get_userResource 'x','123','A_A' |
得到指定用户对指定资是否有指定的操作列权限
--得到指定用户对指定资是否有指定的操作列权限 --返回一个只有一行一列的表,true为存在,false为不存在 create procedure get_userSrcIsPw @usname nvarchar(50),--用户名 @psw nvarchar(50),--口令 @scr nvarchar(50), --资源名 @pw nvarchar(50) --权限名 as
declare @temp nvarchar(5);
select @temp=power_id from user_resource where user_id=@usname and password=@psw and resource_id=@scr and power_id=@pw
if @temp= @pw begin select 'true' as '权限' end else begin select 'false' as '权限'
end go |
get_userSrcIsPw 'x','123','A_A','edit' |
我的例子没有提
read |
1 |
write |
2 |
delete |
4 |
create |
8 |
edit |
16 |
run |
32 |
stop |
64 |
pause |
128 |
admin |
256 |
all |
512 |
none |
1024 |
award |
2048 |
这种设记的意思,可以自已想一下(^_^)