Group_define(组定义)字段中文名称 字段名 字段类型 主健 外健 是否为空
组名称 Group_name varchar(50) FALSE FALSE TRUE
组描述 Describe Varchar(255) FALSE FALSE TRUE
组成员名称 Member_name varchar(50) FALSE FALSE False
组类型 Grade_Type Char(1) FALSE FALSE TRUE
User_define (用户定义)字段中文名称 字段名 字段类型 主健 外健 是否为空
用户名称 User_ name varchar(50) TRUE FALSE FALSE
用户全名称 User_full_name varchar(50) FALSE FALSE FALSE
密码 Password Varchar(40) FALSE FALSE TRUE
用户能够更改密码 Never_change Char(1) FALSE FALSE TRUE
账号是否停用 ID_stop Char(1) FALSE FALSE TRUE
用户创建日期 Create_date datetime FALSE FALSE TRUE
用户注销日期 Delete_date datetime FALSE FALSE TRUE
用户注销标记 Delete_type Char(1) FALSE FALSE TRUE
用户描述 describe varchar(255) FALSE FALSE TRUE
用户所属组 group_owner varchar(255) FALSE FALSE TRUE
类型 Type Char(1) FALSE FALSE TRUE
User_owner (用户定义)字段中文名称 字段名 字段类型 主健 外健 是否为空
用户名称 User_name varchar(50) TRUE FALSE FALSE
用户所属组 group_owner varchar(255) FALSE FALSE FALSE
Subsystem_define (模块功能定义)字段中文名称 字段名 字段类型 主健 外健 是否为空
子系统名称 Subsys_name varchar(50) FALSE FALSE FALSE
子系统描述 Subsys_description varchar(50) FALSE FALSE FALSE
Menu_define(菜单定义)字段中文名称 字段名 字段类型 主健 外健 是否为空
菜单ID Menu_name varchar(50) TRUE FALSE FALSE
菜单名称 Menu_caption varchar(50) FALSE FALSE FALSE
所属模块 Subsys_name varchar(50) TRUE TRUE FALSE
command_define(命令按钮定义)字段中文名称 字段名 字段类型 主健 外健 是否为空
按钮ID Command_name varchar(50) TRUE FALSE FALSE
按钮名称 Command_caption varchar(50) FALSE FALSE FALSE
所属菜单 Menu_name varchar(50) FALSE TRUE FALSE
所属模块 Subsys_name varchar(50) FALSE TRUE FALSE
Group_power(组权限)字段中文名称 字段名 字段类型 主健 外健 是否为空
ID Id int TRUE TRUE FALSE
组ID group_name varchar(50) TRUE TRUE FALSE
子系统ID Subsys_ name varchar(50) TRUE TRUE FALSE
菜单ID Menu_ name varchar(50) TRUE TRUE FALSE
按钮ID Command_ name varchar(50) TRUE TRUE FALSE
User_power(用户权限)字段中文名称 字段名 字段类型 主健 外健 是否为空
ID id int TRUE TRUE FALSE
组ID group_ name varchar(50) TRUE TRUE FALSE
子系统ID Subsys_ name varchar(50) TRUE TRUE FALSE
菜单ID Menu_ name varchar(50) TRUE TRUE FALSE
按钮ID Command_ name varchar(50) TRUE TRUE FALSE
System_log(系统登陆日志)字段中文名称 字段名 字段类型 主健 外健 是否为空
用户ID User_ name varchar(50) TRUE TRUE FALSE
子系统名称 Subsys_ name varchar(50) FALSE FALSE FALSE
登陆机器名 Machine_name Varchar(50) FALSE FALSE FALSE
进入时间 enter_time datetime TRUE FALSE FALSE
退出时间 exit_time datetime FALSE FALSE TRUE
组名称 Group_name varchar(50) FALSE FALSE TRUE
组描述 Describe Varchar(255) FALSE FALSE TRUE
组成员名称 Member_name varchar(50) FALSE FALSE False
组类型 Grade_Type Char(1) FALSE FALSE TRUE
User_define (用户定义)字段中文名称 字段名 字段类型 主健 外健 是否为空
用户名称 User_ name varchar(50) TRUE FALSE FALSE
用户全名称 User_full_name varchar(50) FALSE FALSE FALSE
密码 Password Varchar(40) FALSE FALSE TRUE
用户能够更改密码 Never_change Char(1) FALSE FALSE TRUE
账号是否停用 ID_stop Char(1) FALSE FALSE TRUE
用户创建日期 Create_date datetime FALSE FALSE TRUE
用户注销日期 Delete_date datetime FALSE FALSE TRUE
用户注销标记 Delete_type Char(1) FALSE FALSE TRUE
用户描述 describe varchar(255) FALSE FALSE TRUE
用户所属组 group_owner varchar(255) FALSE FALSE TRUE
类型 Type Char(1) FALSE FALSE TRUE
User_owner (用户定义)字段中文名称 字段名 字段类型 主健 外健 是否为空
用户名称 User_name varchar(50) TRUE FALSE FALSE
用户所属组 group_owner varchar(255) FALSE FALSE FALSE
Subsystem_define (模块功能定义)字段中文名称 字段名 字段类型 主健 外健 是否为空
子系统名称 Subsys_name varchar(50) FALSE FALSE FALSE
子系统描述 Subsys_description varchar(50) FALSE FALSE FALSE
Menu_define(菜单定义)字段中文名称 字段名 字段类型 主健 外健 是否为空
菜单ID Menu_name varchar(50) TRUE FALSE FALSE
菜单名称 Menu_caption varchar(50) FALSE FALSE FALSE
所属模块 Subsys_name varchar(50) TRUE TRUE FALSE
command_define(命令按钮定义)字段中文名称 字段名 字段类型 主健 外健 是否为空
按钮ID Command_name varchar(50) TRUE FALSE FALSE
按钮名称 Command_caption varchar(50) FALSE FALSE FALSE
所属菜单 Menu_name varchar(50) FALSE TRUE FALSE
所属模块 Subsys_name varchar(50) FALSE TRUE FALSE
Group_power(组权限)字段中文名称 字段名 字段类型 主健 外健 是否为空
ID Id int TRUE TRUE FALSE
组ID group_name varchar(50) TRUE TRUE FALSE
子系统ID Subsys_ name varchar(50) TRUE TRUE FALSE
菜单ID Menu_ name varchar(50) TRUE TRUE FALSE
按钮ID Command_ name varchar(50) TRUE TRUE FALSE
User_power(用户权限)字段中文名称 字段名 字段类型 主健 外健 是否为空
ID id int TRUE TRUE FALSE
组ID group_ name varchar(50) TRUE TRUE FALSE
子系统ID Subsys_ name varchar(50) TRUE TRUE FALSE
菜单ID Menu_ name varchar(50) TRUE TRUE FALSE
按钮ID Command_ name varchar(50) TRUE TRUE FALSE
System_log(系统登陆日志)字段中文名称 字段名 字段类型 主健 外健 是否为空
用户ID User_ name varchar(50) TRUE TRUE FALSE
子系统名称 Subsys_ name varchar(50) FALSE FALSE FALSE
登陆机器名 Machine_name Varchar(50) FALSE FALSE FALSE
进入时间 enter_time datetime TRUE FALSE FALSE
退出时间 exit_time datetime FALSE FALSE TRUE
前提:
1、登录者是已经注册的用户
2、有设置权限范围(即是将被管理的对象)
如: 公司的每个部门,系统的每个模块,每级栏目等。设置:
1、被管理对象,
按类设置被管理对象的值(唯一性),类别中再设小类。
如,集团为1,集团下公司为01,集团下工厂为02
公司财务部相对应的唯一值为: 01001;公司技术部的值为:01002
工厂财务部相对应的唯一值为: 02001;工厂营销部的值为:020022、管理者
给管理者赋权限:想给他管理公司财务部,在该用户的相关字段Rank(假设)写入01001;如果同时管理公司财务部和公司技术部那么Rank为01001,01002(多选);多个权限类推。 如果管理整个公司则Rank为013、判别权限时,用户Rank字段与被管理对象的相对应的字段进行比较。。----------------
基于用户、角色、权限的概念可以彻底解决以上问题.
这个太对了!
权限:用户对一个功能点能做的操作,包括对一个页面的打开,对一个业务逻辑的调用;一般分为这么几种 浏览 查询(对select的划分) 增加 修改(这个包括审定)删除 还有一个级别。用户:用户名/口令字构成的一对;
通常情况下要做到这么复杂的系统口令和用户名最好都加密 :)
口令最好是 不可逆加密 用户就不能:)
角色:权限的集合。
这里假定有级别 (可以为一数组) 和其它的权限 浏览查询另外业务跟角色的关系有两种写法 1、由业务上定义某个角色
2、角色对某个业务的处理
上面两个方法大致一样,但是我认为采用1、更好。因为以后业务的变化是经常的。
在使用的时候,应该让所有的用户通过同一个登录页面登录;
登录页面对用户的口令字/用户名进行验证,如果合法的话在Session对象的集合里面写上他(她)的角色;
在使用任何一个功能点之前验证用户的权限是否足够,从Session对象里面获取他(她)的角色,从数据库里面查看他(她)是否有足够的权限。-------------------------
用户/权限系统:
几个基本概念:
1.元权限:最基本的权限元素。如添加、修改、删除、审核等都属于一个元权限。
2.权限范围:一个行使权限的空间范围和时间范围。比如只在asp论坛内有修改权限,在delphi论坛却没有,同时必须指定在asp论坛内行使权力的时限。
3.角色:角色= 一组元权限 + 权限范围
4.用户:用户名/口令字构成对。
5.用户组:具有相同权限的用户可以划为一个组。
6.授权:对某个用户/用户组赋某个角色。
7.用户转组:将用户转到其他用户组中。了解了这些,数据库设计不难了吧。该系统可以应付各种情况,可以说是一个通用系统。
-----------------
如果有多种权限,我最常的方法是在用户表中加一个字段,这个字段保存权限, 字段的每一个位代表一种权限,如 1 代表销售权限,那么你的用户记录里的权限字段中就有 1 ,依此类推,如果你有几个权限就有几位。
在判断的时候,先指定哪些页面属于哪些权限并代表哪个字母(例如销售代表1),如果你进入销售页面时,你的数据库权限字段没有1这个字符,那么就进入失败。
-------------------------
有关用户权限的七个表(初次设计这么复杂的用户权限,正在写程序,请高手指点)
----------------------------------------------------------------
对某个对象加入对象表,及对象粒度表中,得到ItemID
如新闻的浏览页面是NewsView.asp,在对象表中加入"新闻",在对象明细表中加入"新闻_浏览"
得到的ItemID是1
在NewsView.asp这个文件中预先写入
Dim ItemID
ItemID=1
UserID=Session("UserID")
'根据这二个参数ItemID,UserID到角色表权限中查是否有值,到用户权限表中查是否有记录
-----------------------------------------------------------
查角色权限表(用户可以属于多个角色,查这个用户所属的多个角色中哪些角色有权限)
if exists( SELECT P_Role_Permission.ItemID
FROM P_Role_Permission INNER JOIN
P_Role ON P_Role_Permission.RoleID = P_Role.RoleID INNER JOIN
P_User_Role ON P_Role.RoleID = P_User_Role.RoleID INNER JOIN
P_User ON P_User_Role.UserID = P_User.UserID
WHERE (P_User.UserID = @a_intManage_UserID) AND (P_Role_Permission.ItemID = @a_intObject_small_ItemID))
return(-3)
-------------------------------------------------------------------------
查用户权限表(用户可以单独增加某个权限,尽量将权限分配到角色中,将用户分配到角色中)
if exists(SELECT P_User_Permission.ItemID
FROM P_User_Permission INNER JOIN
P_User ON P_User_Permission.UserID = P_User.UserID
WHERE (P_User_Permission.ItemID = @a_intObject_small_ItemID) AND (P_User.UserID = @a_intManage_UserID))
return(-3)
没有记录就是没有进入这个页面的权限.
-------------------------------------------------------------
角色表P_Role [RoleID] [int] IDENTITY (1, 1) NOT NULL 角色编号,
[RoleName] [varchar] (200) NOT NULL 角色说明
-----------------------------------------------------------------
用户表
P_User [UserID] [int] IDENTITY (1, 1) NOT NULL 用户编号,
[UserName] [varchar] (50) NOT NULL 用户名,
[PassWord] [varchar] (50) NOT NULL 密码,
[Question] [varchar] (50) NOT NULL 密码提示问题,
[Answer] [varchar] (50) NOT NULL 密码提示问题答案,
[Nickname] [varchar] (50) NOT NULL 昵称,
[TrueName] [varchar] (50) NOT NULL 真名,
.........................
----------------------------------------------------------------------
用户角色表P_User_Role (外键 关联表 P_User,P_Role) [URID] [int] IDENTITY (1, 1) NOT NULL 用户角色编号,
[UserID] [int] NULL 用户编号,
[RoleID] [int] NULL 角色编号
---------------------------------------------------------------------
对象表P_Object [ObjID] [int] IDENTITY (1, 1) NOT NULL 对象编号,
[ObjName] [varchar] (50) NULL 对象名
-----------------------------------------------------------------------------
对象粒度表P_Object_small (外键 关联表 P_Object) [ItemID] [int] IDENTITY (1, 1) NOT NULL 对象粒度编号,
[ObjID] [int] NULL 对象编号,
[ItemType] [varchar] (50) NULL 对象粒度类别,
[DataString] [varchar] (200) NULL 操作的SQL语句,
[DataSource] [varchar] (200) NULL 采用的数据库用户权限
----------------------------------------------------------------------
用户权限表
P_User_Permission (外键 关联表 P_User,P_Object_small) [UIID] [int] IDENTITY (1, 1) NOT NULL 用户权限编号,
[UserID] [int] NULL 用户编号,
[ItemID] [int] NULL 对象粒度编号,
[Value] [varchar] (50) NULL 用户对某对象粒度的权限值
---------------------------------------------------------------------
角色权限表P_Role_Permission (外键 关联表P_Role,P_Object_small) [RIID] [int] IDENTITY (1, 1) NOT NULL 角色权限编号,
[RoleID] [int] NULL 角色编号,
[ItemID] [int] NULL 对象粒度编号,
[Value] [varchar] (50) NULL 角色对某对象粒度的权限值
-------------------------------------------------------------------------
可以分LOGIN,USER,ROLE等概念