标签: rbac权限设计权限设计权限角色数据设计it |
分类: IT小知识 |
二、流程分析
1、用户登陆,2,找到用户角色,3,通过模块表和页面权限对应表,加载模块,4,通过权限包判定当前用户所有角色是否能访问相应的权限资源。
三、页面设计思路
1、角色管理
增加修改删除角色。查看与分配角色的权限
角色分配权限时,资源以页面资源,页面对应的控件资,
角色分配设计思路:通过查找并添加功能模块,显示当前以有的功能模块下面所有的页面,并能分配每一个页面和控件资源的权限.关联的表有(UM_Func,UM_Page,UM_PopedomPage, UM_ControlPopedom, UM_Control)
2、用户管理
实现用户查询,恢复用户默认密码(管理员),修改用户密码和资料(当前用户),给用户分配角色(管理员使用)
3、功能模块维护
对功能模块维护(修改,添加,删除功能模块信息)
4、命名约定
受控对象命名的约定,包括模块,页面,控件,……
5、授权规则
默认策略,限定策略,……
四、数据库角本
CREATE TABLE UM_User
(
UserID Varchar(20) IDENTITY NOT NULL Primary Key, --主键,外键员工表
UserName varchar(50) NOT NULL unique, --用户登录名,不能重复
UserPWD varchar(50) NOT NULL, --用户密码
UserSex bit NOT NULL DEFAULT 1, --用户性别,默认是男
UserBirthday datetime NOT NULL, --出生日期
UserEmail varchar(50) NOT NULL, --电子邮件
UserPhone varchar(20) not null --用户电话
)
GO
--2.角色表
if exists(select name from sysobjects where name = 'UM_Role')
drop table UM_Role
GO
CREATE TABLE UM_Role
(
RoleID int IDENTITY NOT NULL Primary Key, --主键,自增长
RoleName varchar(20) NOT NULL unique, --角色名称,不能重复
Description varchar(50) --描叙
)
GO
--3.用户角色关联表
if exists(select name from sysobjects where name = 'UM_UserRole')
drop table UM_UserRole
GO
CREATE TABLE UM_UserRole
(
UserRoleID int IDENTITY NOT NULL Primary Key, --主键,自增长
UserID int NOT NULL foreign key(UserID) referencesUM_User(UserID), --用户ID
RoleID int NOT NULL foreign key(RoleID) referencesUM_UserRole(RoleID) --角色ID
)
GO
--4.权限(包)表
if exists(select name from sysobjects where name = 'UM_Popedom')
drop table UM_Popedom
GO
CREATE TABLE UM_Popedom
(
PopedomID int IDENTITY NOT NULL Primary Key, --主键,自增长
PopedomName varchar(20) NOT NULL unique, --权限名称
Description varchar(50) NOT NULL --描叙
)
GO
--5.权限(包)角色关联表
if exists(select name from sysobjects where name = 'UM_PopedomRole')
drop table UM_PopedomRole
GO
CREATE TABLE UM_PopedomRole
(
PopedomRoleID int IDENTITY NOT NULL Primary Key, --主键,自增长
RoleID int NOT NULL foreign key(RoleID) referencesUM_UserRole(RoleID), --角色ID
PopedomID int NOT NULL foreign key(PopedomID) referencesUM_Popedom(PopedomID) --权限ID
)
GO
--6.ACL(控件表)
if exists(select name from sysobjects where name = 'UM_Control')
drop table UM_Control
GO
CREATE TABLE UM_Control
(
ControlID int IDENTITY NOT NULL Primary Key, --主键,自增长,控件ID
ControlName varchar(20) NOT NULL unique, --控件名称
PageUrl varchar(20) NOT NULL Primary Key foreign key(PageUrl)references UM_Page(PageUrl), --所属的页面,外键
ControlControlID varchar(20) NOT NULL, --页面中控件ID
Description varchar(50) --描述
)
GO
--7.控件权限关联表
if exists(select name from sysobjects where name = 'UM_ControlPopedom')
drop table UM_ControlPopedom
GO
CREATE TABLE UM_ControlPopedom
(
ControlPopedomID int IDENTITY NOT NULL Primary Key, --主键,自增长
PopedomID int NOT NULL foreign key(PopedomID) referencesUM_Popedom(PopedomID), --权限ID
ControlID int not null foreign key(ControlIDD) referencesUM_Control(ControlID) --控件ID
)
GO
--ACL(Page)
CREATE TABLE UM_Page
(
PageUrl varchar(15) not null Primary Key, --页URL 主键
PageName int not null, --页面名称
FuncCode int not null Primary Key foreign key(FuncCode) referencesUM_Page(FuncCode) --模块编码处键
)
--ACL(功能模块包)
CREATE TABLE UM_Func
(
FuncCode int not null Primary Key, --模块编码主键
PageUrl Varchar(15) not null Primary Key foreign key(PageUrl)references UM_Page(PageUrl), --模块Url 处键
ParentCode int not null, --模块父编码
FuncName Varchar(50) not null, --模块名称
FuncDesc Varchar(200) not null, --模块描述
FuncOrder Int not null, --模块排序默认0
DelFlag Bit not null --删除标记默认False
)
go
CREATE TABLE UM_PopedomPage
(
PopedomID int NOT NULL Primary Key foreign key(PopedomID) referencesUM_Popedom(PopedomID),--权限ID 主键外键
PageUrl int not null Primary Key foreign key(PageUrl) referencesUM_Page(PageUrl)--模块编码主键外键
)
go