无角牛MVC通用后台
第一篇:无角牛MVC通用后台数据库设计
第二篇:无角牛MVC通用后台菜单管理
第三篇:无角牛MVC通用后台权限角色分配
第四篇:无角牛MVC通用后台权限用户分配
第五篇:无角牛MVC通用后台缓存
第六篇:无角牛MVC通用后台批量导入方案
第七篇:无角牛MVC通用后台导出
第八篇:无角牛MVC通用后台一些注意事项
第九篇:无角牛MVC通用后台源码1.0放送
原文链接:http://www.cnblogs.com/wujiaoniu/p/3870131.html
表:Roles(角色表)
序号 |
字段名 |
类型 |
长度 |
精度 |
小数位数 |
默认值 |
允许空 |
主键 |
说明 |
1 |
ID |
int |
4 |
|
|
|
|
√ |
|
2 |
RoleName |
nvarchar |
50 |
|
|
|
|
|
角色名 |
表:Users(用户表)
序号 |
字段名 |
类型 |
长度 |
精度 |
小数位数 |
默认值 |
允许空 |
主键 |
说明 |
1 |
ID |
int |
4 |
|
|
|
|
√ |
|
2 |
RoleID |
int |
4 |
|
|
|
√ |
|
用户所属角色 |
3 |
UserName |
nvarchar |
50 |
|
|
|
√ |
|
用户名 |
4 |
Password |
nvarchar |
50 |
|
|
|
√ |
|
密码 |
5 |
Name |
nvarchar |
50 |
|
|
|
√ |
|
用户姓名 |
6 |
Mobile |
nvarchar |
50 |
|
|
|
√ |
|
手机号 |
7 |
|
nvarchar |
100 |
|
|
|
√ |
|
邮箱 |
8 |
Phone |
nvarchar |
50 |
|
|
|
√ |
|
电话 |
9 |
UProvince |
nvarchar |
50 |
|
|
|
√ |
|
省份 |
10 |
UCity |
nvarchar |
50 |
|
|
|
√ |
|
城市 |
11 |
UDistrict |
nvarchar |
50 |
|
|
|
√ |
|
区县 |
12 |
Fax |
nvarchar |
50 |
|
|
|
√ |
|
传真 |
13 |
Address |
nvarchar |
50 |
|
|
|
√ |
|
地址 |
14 |
PostCode |
nvarchar |
50 |
|
|
|
√ |
|
邮编 |
15 |
Flag |
int |
4 |
|
|
((1)) |
√ |
|
1=有效 0=删除 |
16 |
Regdate |
datetime |
8 |
|
|
(getdate()) |
√ |
|
|
17 |
Modify |
datetime |
8 |
|
|
|
√ |
|
|
表:Controls(控件常量表)
序号 |
字段名 |
类型 |
长度 |
精度 |
小数位数 |
默认值 |
允许空 |
主键 |
说明 |
1 |
ControlID |
int |
4 |
|
|
|
|
√ |
控件命名规则表ID(全局使用,参考命名规则) |
2 |
Description |
nvarchar |
50 |
|
|
|
√ |
|
描述 |
3 |
ControlName |
nvarchar |
50 |
|
|
|
√ |
|
控件名称,页面中的控件参考命名 |
表:Functions(菜单表)
序号 |
字段名 |
类型 |
长度 |
精度 |
小数位数 |
默认值 |
允许空 |
主键 |
说明 |
1 |
FunctionID |
int |
4 |
|
|
|
|
√ |
菜单目录表ID |
2 |
FunctionName |
nvarchar |
50 |
|
|
|
√ |
|
菜单名称 |
3 |
Controller |
nvarchar |
50 |
|
|
|
√ |
|
链接地址 |
4 |
Action |
nvarchar |
50 |
|
|
|
√ |
|
|
5 |
ParentID |
int |
4 |
|
|
|
√ |
|
上级菜单ID,顶层菜单为1 |
6 |
Orders |
int |
4 |
|
|
|
√ |
|
排序字段 |
7 |
IsDisplay |
bit |
1 |
|
|
((1)) |
√ |
|
|
表:FunctionControls(页面控件注册表)
序号 |
字段名 |
类型 |
长度 |
精度 |
小数位数 |
默认值 |
允许空 |
主键 |
说明 |
1 |
ID |
int |
4 |
|
|
|
|
√ |
页面控件权限注册表ID,页面中的所有权限需要添加在此表 |
2 |
FunctionID |
int |
4 |
|
|
|
√ |
|
菜单项ID |
3 |
ControlID |
int |
4 |
|
|
|
√ |
|
控制ID,对应Controls表ID |
4 |
ControlName |
varchar |
50 |
|
|
|
√ |
|
显示名称 |
表:FunctionAccessControls(权限分配记录表)
序号 |
字段名 |
类型 |
长度 |
精度 |
小数位数 |
默认值 |
允许空 |
主键 |
说明 |
1 |
ID |
uniqueidentifier |
16 |
|
|
(newid()) |
|
√ |
权限配置表ID |
2 |
FunctionID |
int |
4 |
|
|
|
√ |
|
菜单项ID |
3 |
RoleID |
int |
4 |
|
|
|
√ |
|
角色ID |
4 |
UserID |
int |
4 |
|
|
|
√ |
|
用户ID |
5 |
Flag |
int |
4 |
|
|
((0)) |
√ |
|
0基本功能 1 扩展功能 2缩减功能 |
6 |
Controls |
nvarchar |
50 |
|
|
|
√ |
|
control的集合 |
Controls表为一个常量表供后面使用,其内容如下
为了演示咱初始化一些数据到表中。
Roles表
Users表
Functions表
FunctionControls表
FunctionAccessControls表
分配权限的过程分两步:
第一步:将每个页面(function)中的控件注册到FunctionControls表,这一步要参考Controls常量表。
第二步:将角色所具有的访问权限,分配到FunctionAccessControls表中。此类记录UserID=null,Flag=0,Controls为逗号分隔的ControlsID.
形如:
一个角色可以有多个用户,那么分配完角色权限后,其下的用户默认也就具有了相应的权限。
接下来若需要用户个性化分配权限则按用户插入相应权限记录即可。此类记录UserId不为空,比如1、2、3,Flag可能会有两种情况:第一种1扩展角色分配时不具有的权限,第二种2缩减角色分配时具有的权限,也就是使此用户不能访问此菜单。
形如:
按角色、单用户分配的权限共存一张表中如果管理呢?读取时需要做如下处理:首先按Role读取出分配数据,再按角色ID及用户ID读取出用户分配数据,以角色数据为基数,分别按用户数据中的Flag值过滤出应该增加或减少的数据修改基数,最后就是这个用户可以实际访问的菜单。
上面只是说的菜单,那么菜单内控件如何控制呢?用户不能访问菜单也就不存在此问题了。好,角色数据中有此菜单的权限配置,用户数据中也有此菜单的权限配置,那么在上面修改基数数据时使用户Controls覆盖角色Controls字段即可。