基于角色的权限设计(一)

转载 2013年12月02日 17:46:44

基于角色的权限设计(一)

  在任何系统中,权限设计是最基础的东西,本文给出一个基于角色的权限设计的循序渐进的设计方案。

  在权限系统中,功能(权限)是最小的单位,比如起草新闻、编辑新闻、审核新闻、删除新闻等,而角色是一类功能的集合,比如新闻编辑这个角色,他可能有起草新闻、编辑新闻等功能集合,而责任编辑他可能就有更多的权限,比如除了新闻编辑的功能,还有审核新闻、删除新闻等功能,给张三赋予新闻编辑的角色(其实我更愿意说把张三加入到新闻编辑这个角色中去),张三就可以起草新闻、编辑新闻了,给李四赋予责任编辑的角色,李四就可以起草新闻、编辑新闻、审核新闻、删除新闻了。

  我们来看看版本一的解决方案: 

 
 

  我们来模拟一下上面的数据:

  用户信息表:

UserID

UserName

U1

张三

U2

李四

  角色表:

RoleID

RoleName

R1

新闻编辑

R2

责任编辑

  角色用户表:

RoleID

UserID

R1

U1

R2

U2

  功能表:

FunctionID

FunctionName

F1

起草新闻

F2

编辑新闻

F3

审核新闻

F4

删除新闻

  角色功能表:

RoleID

FunctionID

R1

F1

R1

F2

R2

F1

R2

F2

R2

F3

R2

F4

  我们来看看如何判断一个用户具有某个功能权限:

  首先在用户张三登录的时候,获取张三的全部功能列表:

Select FunctionID From 角色功能表 Where RoleID In (Select RoleID From 用户角色表 Where UserID=’U1’)

  这样就可以得到张三的全部功能列表Functions,在起草新闻的页面我们就可以做如下判断:

Functions.Contain(‘F1’);//当然你可以把这个’F1’定义成一个常量:NewsFunction.Draft

  如果为true就说明张三有起草新闻的权限。

  当然对于web应用,您可以把Functions session保存起来,以避免每打开一个页面都去数据库中获取。

  似乎看起来是一个不错的解决方案。

  还是新闻系统,最初新闻系统没有分类,但是随着新闻的增加,没有分类的新闻看起来总是乱的,于是张三和李四给新闻添加了分类A、分类B,还是由张三负责起草,李四负责审核,以后又添加了更多的分类,并且也增加了人手,这个时候就有新的要求出来了:希望张三只负责分类A的起草,分类B的起草交给其他人做,李四呢也只负责分类A的审核(就相当于是一个栏目的责任编辑)。 

相关文章推荐

基于角色的Web应用系统权限设计

  • 2007年09月14日 18:08
  • 130KB
  • 下载

java用户角色权限设计.doc

  • 2016年08月13日 11:13
  • 189KB
  • 下载

用户和角色:通用权限管理系统数据库表结构如何设计?

一,前言 权限管理系统的应用者应该有三种不同性质上的使用, A,使用权限 B,分配权限 C,授权权限  本文只从《使用权限》和《分配权限》这两种应用层面分析,暂时不考虑《授权权限》这种。 二...
  • e_zhiwen
  • e_zhiwen
  • 2012年07月05日 23:34
  • 15824

java用户角色权限设计

  • 2012年12月20日 11:50
  • 166KB
  • 下载

基于角色的权限控制设计

  • 2012年03月14日 14:56
  • 486KB
  • 下载

扩展RBAC用户角色权限设计方案

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-...

通用角色权限管理系统设计

  • 2012年05月01日 17:25
  • 525KB
  • 下载

角色用户权限DB设计

  • 2014年01月07日 15:24
  • 26KB
  • 下载

j2EE项目中角色,菜单,权限的设计和应用

引言java ee在项目中一般需要进行权限管理,权限管理控制角色的相关权限,如菜单的显示,菜单二级菜单的权限,三级操作的权限等等。当项目越来越大,菜单越多,二级及三级菜单添加频繁,就需要良好的权限管理...

RBAC用户角色权限设计方案

  • 2013年09月12日 13:44
  • 144KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于角色的权限设计(一)
举报原因:
原因补充:

(最多只允许输入30个字)