首页 > 代码库 > 第一篇:无角牛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

Email

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=nullFlag=0Controls为逗号分隔的ControlsID.

形如:

一个角色可以有多个用户,那么分配完角色权限后,其下的用户默认也就具有了相应的权限。

接下来若需要用户个性化分配权限则按用户插入相应权限记录即可。此类记录UserId不为空,比如1、2、3,Flag可能会有两种情况:第一种1扩展角色分配时不具有的权限,第二种2缩减角色分配时具有的权限,也就是使此用户不能访问此菜单。

形如:

按角色、单用户分配的权限共存一张表中如果管理呢?读取时需要做如下处理:首先按Role读取出分配数据,再按角色ID及用户ID读取出用户分配数据,以角色数据为基数,分别按用户数据中的Flag值过滤出应该增加或减少的数据修改基数,最后就是这个用户可以实际访问的菜单。

上面只是说的菜单,那么菜单内控件如何控制呢?用户不能访问菜单也就不存在此问题了。好,角色数据中有此菜单的权限配置,用户数据中也有此菜单的权限配置,那么在上面修改基数数据时使用户Controls覆盖角色Controls字段即可。