在Web开发中关于权限管理设计大抵涉及到两个方面:一:功能方面权限设计;二:资源方面权限设计。二者比较来看,功能方面权限的可重用性更高。

1.关于权限:

  • 按照角色权限的最简单的设计

    名称 描述
    用户 不具备管理功能
    管理员 具备管理普通用户的权限
    超级管理员 具备管理管理员的权限

    上面的设计直接将参与系统的用户分为三类角色:用户,管理员,超级管理员。

  • 按照角色权限,粒度划分再小些设计

    名称 权限 描述
    普通用户 普通服务 享有系统有限服务
    VIP用户 高级服务 享有VIP服务

    上面是用户的简单划分示例,通过将用户进行权限划分,来提供不同的服务。

    名称 权限 描述
    产品管理员 管理产品模块 具备产品模块的管理操作权限
    客户管理员 管理客户模块 具备客户模块的管理操作权限

    上面是管理员的简单划分示例,通过将后台管理员进行权限划分,使的每一个管理员角色具备不同的操作权限,并且不同角色的管理员在管理角色上不存在交叉管理,这样系统的管理部分才有可能保存清晰,完整,有效。

    名称 权限 描述
    超级管理员 管理各类管理员 具备最高的管理权限
    系统管理员 管理整个系统,包括管理超级管理员 系统管理员具备操作整个系统的最高权限

    上面是系统级别的管理简单划分示例,一个系统建设完成后应该具备自管理的功能,即:系统环境配置,模块管理,使用系统的干系人管理等都可以通过自身的管理模块完成,而不是人为的修改数据或者系统程序。

  • 按照模块对角色具备的操作权限进行划分,粒度将更细。对于模块层的权限划分使得系统权限管理严格,个角色的智能更加精确,当然系统的设计,实现也相对复杂。

    2.用户-角色-权限的一个物理模型

    设计示例图如下所示:

说明:

a.用户-用户角色-角色:可以构成一个用户角色权限管理子模块,即1中最简单的设计。

b.模块-模块权限-权限:可以构成一个模块权限管理子模块。注:这里的描述有些欠缺,单独的看待模块部分,应该描述为模块-模块功能-功能更为恰当。

c.将a和b同过角色权限组合在一起就可以构成一个用户-角色-权限的按照功能模块粒度划分的权限管理系统。

3.用户-角色-权限数据库中表之间的关联关系说明:

上述数据库表的关系图中的每一张表不涉及具体的字段内容,所具备的字段都是为了描述各个表之间的关联关系。

实体表:用户表,角色表,权限表,模块表;

中间表:用户角色,角色权限,模块权限表,用来解决多对多问题;

角色权限表:涉及角色具备的权限,该权限是来自模块权限,也就是符合2中的模块权限。

关于角色权限表是用户-角色-权限系统的一个可扩展口。例如:角色权限可以和权限直接关联,或者二者之间添加特定场景的其他表。

4.数据库用例数据,使用用户-角色-权限系统

至此,用户,角色,权限的划分就形成了,而且可以通过实际中需要的用户,角色,权限的管理程度,进行简化或者增加表。

5.查询用户编码为400900500的权限

SELECTt_account.ACCCODE, t_account.ACCNAME,t_role.ROLECODE, t_role.ROLENAME,t_module_privilege.MODUELCODE,t_module.MODUELCODE, t_module.MODUELNAME,t_privilege.PRICODE, t_privilege.PRINAME
FROMt_account, t_account_role, t_role, t_role_privilege, t_module_privilege, t_module, t_privilege
WHEREt_account_role.ACCCODE=t_account.ACCCODE AND t_account_role.ROLECODE=t_role.ROLECODE
ANDt_account.ACCCODE="400900500"
ANDt_role_privilege.ROLECODE=t_role.ROLECODE   AND t_role_privilege.MPID=t_module_privilege.MPID
ANDt_module_privilege.MODUELCODE=t_module.MODUELCODE AND t_module_privilege.PRICODE=t_privilege.PRICODE

通过面的SQL语句可以查询到400900500用户的权限。

上述查询仅仅说明各表之间的数据关联关系,在实现开发中这样的查询避免使用。


用户,角色,权限的一个很好的参考示例就是Oracle数据库的用户管理机制。Web开发中更多的是涉及到管理用户,管理员,系统管理,模块访问权限,资源访问等问题的处理。

关于用户角色权限管理有程序的开发系统,参见如:http://www.oschina.net/p/limiton。

转载于:https://blog.51cto.com/aiilive/1297317

Web开发中的用户角色权限设计总结相关推荐

  1. Mendix用户角色权限设计思路

    ​在传统的企业应用架构设计中,不可避免需要涉及用户角色权限的设计,其中最为通用的模型是RBAC模型.RBAC(基于角色的访问控制)是指用户通过角色与权限进行关联.即一个用户拥有若干角色,每一个角色拥有 ...

  2. java 权限管理与用户角色权限设计

    实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台 ...

  3. java用户角色权限管理 只显示姓_java权限管理与用户角色权限设计

    实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台 ...

  4. 响应式HTML网页开发,web开发中的响应式网页设计

    概念 响应式网页设计最初是由 Ethan Marcotte 提出的一个概念:为什么一定要为每个用户群各自打造一套设计和开发方案?Web设计应该做到根据不同设备环境自动响应及调整.当然响应式Web设计不 ...

  5. 用户角色权限设计思路

    http://blog.csdn.net/fmx121586/article/details/8025268 转载于:https://www.cnblogs.com/Vlaner/p/3564769. ...

  6. 【深度解析RBAC用户-角色-权限设计方案,以及核心逻辑代码的讲解】

    首先对于b2b.b2c等这一些网站后台,一般情况下都需要权限管理的设计与实现,对于这部分,通常是固定不变的,每次只需要做少量的改动即可. 如何设计这几张表呢? RBAC(基于角色的访问控制),也就是用 ...

  7. 设计OA系统的用户-角色-权限分配

    转载:http://www.cnblogs.com/jsping/archive/2013/01/23/2872972.html 设计OA系统的用户-角色-权限分配 一,前言  本文主要讲述在OA系统 ...

  8. apache2 wordpress目录权限_小白指南:WordPress中的用户角色和权限

    WordPress本身自带了一套用户角色管理系统,这套系统定义了每个用户角色可以做什么,不可以做什么.随着网站的发展,弄懂这些用户角色和权限的问题是非常有必要的.在这篇小白指南中,我们将用图表的形式对 ...

  9. 后台用户角色权限管理设计

    目录 1.概述 2.设计 2.1 用户管理 2.2 角色管理 2.3 权限管理 2.4 用户.角色.权限的关系 3.总结 1.概述 在设计产品后台系统设置时,可根据不同项目的实际需求来设计后台系统设置 ...

最新文章

  1. Unity插件之NGUI学习(4)—— 创建UI2DSprite动画
  2. P2B: Point-to-Box Network 点云目标跟踪(CVPR 2020)
  3. pdf压缩工具_PDF文件过大如何缩小,几步教你完成压缩
  4. Arduino可穿戴教程保存源文件与打开已经存在的源文件
  5. Windows 7删需要权限的文件
  6. Go语言Flag的简单示例
  7. Spring MVC-02循序渐进之解耦控制器和校验器
  8. socket 套接字的基本概念
  9. 将 ext_net 连接到 router - 每天5分钟玩转 OpenStack(145)
  10. systrace html空白,Android性能优化之Systrace工具介绍(一) _ Systrace生成的trace.html打开空白或者打不开的解决办法...
  11. discuz! X3 更改域名全程记录 (修改域名的方法)
  12. sql join语句语法_SQL Left Join语句:示例语法
  13. python request属性及方法说明
  14. 离京2小时,快手百亿入云,一切为了「看见」
  15. PSpice电路模拟
  16. 转载--32个鲜为人知的自学网站
  17. android获取显示屏尺寸大小,Android 屏幕各尺寸的获取
  18. vue前端上传文件夹的插件_vue文件上传插件
  19. 失败的过去式英文翻译_过去式用英语怎么说
  20. ANSYS workench 物体受力分析

热门文章

  1. 将Mac OS X从Snow Leopard升级到Mountain Lion
  2. 10个 DIV+CSS 需要注意的问题
  3. 中小型企业部分拓朴结构配置方法
  4. 【转】名企献身说法:我们喜欢这样的简历
  5. 从零上手 GDB 调试,看这个教程就够了~
  6. 软件测试用例文档模板 简书,如何写出高质量的测试用例
  7. linux编译安装madam,linux 下 使用 mdadm 创建阵列
  8. MySQL高级 - 锁 - InnoDB行锁 - 间隙锁危害
  9. rabbitmq常用配置
  10. 解决webserver tcp连接大量CLOSE_WAIT 问题