[转]通用权限管理设计

[转]通用权限管理设计

[转]http://www.kanwenzhang.com/erp/fda6e89aec274a36/c/1979/11979.html

.引言

   因做过些系统权限管理功能虽然逐步完善,但总有些不尽人意地方,总想抽个时间更好思考权限系统设计。

   权限系统直以们应系统不缺少个部分,若每个应系统都重新系统权限进行设计,以满足不同系统需求,浪费们不少宝贵时间,所以花时间设计个相权限系统有意义

  二.设计目标

   设计个灵活、通、方便权限管理系统。

   这个系统们需系统所有资源进行权限控制,那么系统资源包括哪些呢?这些资源简单概括静态资源(功能操作、数据列)动态资源(数据),分别称象资源数据资源,系统设计实现叫法。

  系统目标就系统所有象资源数据资源进行权限控制,比如应系统功能、各个界面、数据显示列以及各种行级数据进行权限操控。

  三.相关象及其关系

   概理清权限系统相关概念,如所示:

  1.    权限

  系统所有权限信息。权限具有级关系,个树状结构。个例子

  系统管理

  户管理

   查看

  新增

   修改

  

   每个权限,又存两种访问,另授权,例如于“查看户”这个权限,如果户只被授予“访问”,那么就不能所具有这个权限分配给其人。

  2.   

  应系统具体操作以自己拥有权限信息,以归属于0~n个角色,属于0~n个组。权限集自身具有权限、所属各角色具有权限、所属各组具有权限合集。权限、角色、组关系都nn关系。

  3.    角色

  拥有相似权限户进行分类管理,定义角色概念,例如系统管理员、管理员、户、访客等角色。角色具有级关系,以形成树状视图,父级角色权限自身及所有子角色权限综合。父级角色户、父级角色组同理推。

  4.    组

  更好地管理户,户进行分组归类,简称户分组。组具有级关系,以形成树状视图。实际们知道,组以具有自己角色信息、权限信息。这让QQ户群,个群以有户,以加入个群。每个群具有自己权限信息。例如查看群共享。QQ群以具有自己角色信息,例如普通群、级群等。

  针面提出四种类型象,让们通过图看看关系。

  

  有以看出,这四关系复杂,而实际比这个图还复杂,权限、角色、组都具有级关系,权限管理系统比较棘手问题,设计个通权限管理系统,工作量着实不

  当然于有些项目,权限问题并不那么复杂。有只需牵涉权限户两种类型象,只需户分配权限即

  ,引入角色象,例如基于角色权限系统, 只需给角色分配权限,户都隶属于角色,不需单独户分配角色信息。

 理清象关系,让们接着进行数据库设计。数据库建模时,于NN 关系,般需加入个关联表表示关联关系。步估计,本系统至少需十张表,分别:权限表、户表、角色表、组表、户权限关联表、 户角色关联表、角色权限关联表、组权限关联表、组角色关联表、户属组关联表。当然还能引出些相关表。面让PowerDesigner画出各表吧。

   各表及其关系如

权限管理设计篇(二)——数据库设计" src="http://img.kanwenzhang.com/images/t2/200907/20090707055803926.bmp">

 

   

  1.    户表

  户表(TUser)

  字段名称

  字段

  类型

  备注

  记录标识

  tu_id

  bigint

  pk, not null

  所属组织

  to_id

  bigint

  fk, not null

  登录帐号

  login_name

  varchar(64)

  not null

  户密码

  password

  varchar(64)

  not null

  户姓名

  vsername

  varchar(64)

  not null

  手机号

  mobile

  varchar(20)

  电子邮箱

  email

  varchar(64)

  创建时间

  gen_time

  datetime

  not null

  登录时间

  login_time

  datetime

  次登录时间

  last_login_time

  datetime

  登录次数

  count

  bigint

  not null

  2.    角色表

  角色表(TRole)

  字段名称

  字段

  类型

  备注

  角色ID

  tr_id

  bigint

  pk, not null

  父级角色ID

  parent_tr_id

  bigint

  not null

  角色名称

  role_name

  varchar(64)

  not null

  创建时间

  gen_time

  datetime

  not null

  角色描述

  description

  varchar(200)

  3.    权限表

  权限表(TRight)

  字段名称

  字段

  类型

  备注

  权限ID

  tr_id

  bigint

  pk, not null

  父权限

  parent_tr_id

  bigint

  not null

  权限名称

  right_name

  varchar(64)

  not null

  权限描述

  description

  varchar(200)

  4.    组表

  组表(TGroup)

  字段名称

  字段

  类型

  备注

  组ID

  tg_id

  bigint

  pk, not null

  组名称

  group_name

  varchar(64)

  not null

  父组

  parent_tg_id

  bigint

  not null

  创建时间

  gen_time

  datetime

  not null

  组描述

  description

  varchar(200)

  5.    角色权限表

  角色权限表(TRoleRightRelation)

  字段名称

  字段

  类型

  备注

  记录标识

  trr_id

  bigint

  pk, not null

  角色

  Role_id

  bigint

  fk, not null

  权限

  right_id

  bigint

  fk, not null

  权限类型

  right_type

  int

  not null(0:访问,1:授权)

  6.    组权限表

  组权限表(TGroupRightRelation)

  字段名称

  字段

  类型

  备注

  记录标识

  tgr_id

  bigint

  pk, not null

  组

  tg_id

  bigint

  fk, not null

  权限

  tr_id

  bigint

  fk, not null

  权限类型

  right_type

  int

  not null(0:访问,1:授权)

  7.    组角色表

  组角色表(TGroupRoleRelation)

  字段名称

  字段

  类型

  备注

  记录标识

  tgr_id

  bigint

  pk, not null

  组

  tg_id

  bigint

  fk, not null

  角色

  tr_id

  bigint

  pk, not null

  8.    户权限表

  户权限表(TUserRightRelation)

  字段名称

  字段

  类型

  备注

  记录标识

  tur_id

  bigint

  pk, not null

  

  tu_id

  bigint

  fk, not null

  权限

  tr_id

  bigint

  fk, not null

  权限类型

  right_type

  int

  not null(0:访问,1:授权)

  9.    户角色表

  户角色表(TUserRoleRelation)

  字段名称

  字段

  类型

  备注

  记录标识

  tur_id

  bigint

  pk, not null

  

  tu_id

  bigint

  fk, not null

  角色

  tr_id

  bigint

  fk, not null

  10.  户组表

  户组表(TUserGroupRelation)

  字段名称

  字段

  类型

  备注

  记录标识

  tug_id

  bigint

  pk, not null

  

  tu_id

  bigint

  fk, not null

  组

  tg_id

  bigint

  fk, not null

  11.  组织表

  组织表(TOrganization)

  字段名称

  字段

  类型

  备注

  组织id

  to_id

  bigint

  pk, not null

  父组

  parent_to_id

  bigint

  not null

  组织名称

  org_name

  varchar(64)

  not null

  创建时间

  gen_time

  datetime

  not null

  组织描述

  description

  varchar(200)

  12.  操作日志表

  操作日志表(TLog)

  字段名称

  字段

  类型

  备注

  日志ID

  log_id

  bigint

  pk, not null

  操作类型

  op_type

  int

  not null

  操作

  content

  varchar(200)

  not null

  操作人

  tu_id

  bigint

  fk, not null

  操作时间

  gen_time

  datetime

  not null

 

posted @ 2009-12-30 13:33  星释天狼  阅读(424)  评论(0编辑  收藏  举报