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

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

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

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

  用户信息表:

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=’U<?xml:namespace prefix = st1 />1’)

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

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

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

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

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

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

第二部分:http://tubo.cnblogs.com/archive/2005/09/02/228828.html

转载于:https://www.cnblogs.com/tubo/archive/2005/09/02/228735.html

基于角色的权限设计(一)相关推荐

  1. OAuth2在分布式微服务架构下基于角色的权限设计(RBAC)

    在前两节的基础上,对权限控制作进一步的分析与设计. RBAC(Role-Base Access Control,基于角色的访问控制) 本篇内容基于个人理解,不当之处,欢迎批评指正. 前两篇内容: [图 ...

  2. 基于角色的权限设计(二)

    针对这样的需求,版本一就无能为力了(当然你也可以增加几个功能:比如分类A的新闻起草和分类B的新闻起草,再把这个功能添加到相应的角色里面去,但是这个应该不是我们要得解决方案吧,不过版本二也是基于这个思想 ...

  3. 基于RBAC的权限设计

    来源:http://www.phpchina.com/html/73/5173_itemid_10049.html 基于RBAC 的权限设计模型: 1        RBAC 介绍   RBAC 模型 ...

  4. RBAC(基于角色的权限访问控制)

    第一节.RBAC简介 英文全称(Role-Based Access Control) 中文全称:基于角色的权限访问控制 rbac: 一种数据库设计思想,根据设计数据库设计方案,完成项目的权限控制. 经 ...

  5. AspNetForums中基于角色的权限控制

    AspNetForums中基于角色的权限控制 http://blog.joycode.com/dotey/archive/2005/02/24/44791.aspx asp.net页面如何控制页面依据 ...

  6. 基于角色的权限控制模型RBAC

    本文来说下基于角色的权限控制模型RBAC 文章目录 概述 RBAC权限模型简介 RBAC的演化进程 用户与权限直接关联 一个用户拥有一个角色 一个用户一个或多个角色 页面访问权限与操作权限 数据权限 ...

  7. 后台产品基本功:RBAC权限后台角色与权限设计

    原创: Kevin改变世界的点滴 Kevin改变世界的点滴 昨天 后台产品经理在设计系统中,随着业务与用户量起来后.都会考虑系统的角色与权限设计.借此经典的角色 与权限设计:RBAC,基于角色的权限访 ...

  8. 数据库管理员用户角色组权限设计

    一.引言 因为做过的一些系统的权限管理的功能虽然在逐步完善,但总有些不尽人意的地方,总想抽个时间来更好的思考一下权限系统的设计. 权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新 ...

  9. 【技术】基于数据库的权限设计

    基于数据库的权限设计 基于数据库的权限设计 表设计 基于数据库的权限设计 目前大部分的系统都需要权限控制,这也是系统的标配,目前市面上已经有很多成熟的权限框架,比如:Shiro.Spring Secu ...

最新文章

  1. 编译器设计-代码生成
  2. 某网友惊现如此言论:程序员没有技术壁垒,不值得这么高工资!过高工资引起加班和行业内卷,应该用降薪来换取不加班!网友:你好天真!...
  3. vue检测不到data里数组里面元素的变化
  4. SAP Spartacus 读取 Cart 的原理分析
  5. oracle服务器内存建议,Oracle内存分配建议
  6. Find The Multiple——简单搜索+大胆尝试
  7. 计蒜客——数位反转问题(代码+解析)
  8. SAP License:ERP之路
  9. 解决浏览器拦截弹出窗口问题
  10. Animator Controller 继承关系
  11. RabbitMQ 与 Erlang 安装与配置
  12. fastboot工具使用
  13. 都说程序员秃头996,你见过游戏3D建模师爆肝007吗?
  14. “.”和“->”的区别
  15. matlab对摄像头实时运动目标检测,基于Matlab实时运动目标跟踪检测系统
  16. STC8单片机ADC采样注意事项
  17. HTML5常用标签【知识点整理】
  18. 联想电脑使用“联想电脑管家”之后电脑频繁蓝屏
  19. LibGdx练习-像素鸟(一)
  20. IDM安装与下载百度云文件

热门文章

  1. 这个对标苹果的微软实体店,开了十一年之后,现在要永久关闭了
  2. 特斯拉化身电影院,马斯克:车自动开,你来看电影
  3. Fiddler (三) Composer创建和发送HTTP Request
  4. SQL-4查找所有已经分配部门的员工的last_name和first_name(自然连接)
  5. iOS开发之设计模式篇
  6. cloudera manage 4.8.6做hive元数据库主从同步后
  7. jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
  8. jQUery操作checkbox
  9. 安卓音乐播放器开发实例
  10. JQuery 表单校验插件 validate 使用纪录