首页 > 代码库 > 第一篇:无角牛MVC通用后台数据库设计
第一篇:无角牛MVC通用后台数据库设计
无角牛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字段即可。