Web开发中的用户角色权限设计总结
在Web开发中关于权限管理设计大抵涉及到两个方面:一:功能方面权限设计;二:资源方面权限设计。二者比较来看,功能方面权限的可重用性更高。
1.关于权限:
按照角色权限的最简单的设计
名称 描述 用户 不具备管理功能 管理员 具备管理普通用户的权限 超级管理员 具备管理管理员的权限 上面的设计直接将参与系统的用户分为三类角色:用户,管理员,超级管理员。
按照角色权限,粒度划分再小些设计
名称 权限 描述 普通用户 普通服务 享有系统有限服务 VIP用户 高级服务 享有VIP服务 上面是用户的简单划分示例,通过将用户进行权限划分,来提供不同的服务。
名称 权限 描述 产品管理员 管理产品模块 具备产品模块的管理操作权限 客户管理员 管理客户模块 具备客户模块的管理操作权限 上面是管理员的简单划分示例,通过将后台管理员进行权限划分,使的每一个管理员角色具备不同的操作权限,并且不同角色的管理员在管理角色上不存在交叉管理,这样系统的管理部分才有可能保存清晰,完整,有效。
名称 权限 描述 超级管理员 管理各类管理员 具备最高的管理权限 系统管理员 管理整个系统,包括管理超级管理员 系统管理员具备操作整个系统的最高权限 上面是系统级别的管理简单划分示例,一个系统建设完成后应该具备自管理的功能,即:系统环境配置,模块管理,使用系统的干系人管理等都可以通过自身的管理模块完成,而不是人为的修改数据或者系统程序。
按照模块对角色具备的操作权限进行划分,粒度将更细。对于模块层的权限划分使得系统权限管理严格,个角色的智能更加精确,当然系统的设计,实现也相对复杂。
2.用户-角色-权限的一个物理模型
设计示例图如下所示:
说明:
a.用户-用户角色-角色:可以构成一个用户角色权限管理子模块,即1中最简单的设计。
b.模块-模块权限-权限:可以构成一个模块权限管理子模块。注:这里的描述有些欠缺,单独的看待模块部分,应该描述为模块-模块功能-功能更为恰当。
c.将a和b同过角色权限组合在一起就可以构成一个用户-角色-权限的按照功能模块粒度划分的权限管理系统。
3.用户-角色-权限数据库中表之间的关联关系说明:
上述数据库表的关系图中的每一张表不涉及具体的字段内容,所具备的字段都是为了描述各个表之间的关联关系。
实体表:用户表,角色表,权限表,模块表;
中间表:用户角色,角色权限,模块权限表,用来解决多对多问题;
角色权限表:涉及角色具备的权限,该权限是来自模块权限,也就是符合2中的模块权限。
关于角色权限表是用户-角色-权限系统的一个可扩展口。例如:角色权限可以和权限直接关联,或者二者之间添加特定场景的其他表。
4.数据库用例数据,使用用户-角色-权限系统
用户
三个用户(标识列[主键],用户编码,用户名称)
角色
四种角色(标识列[主键],角色编码,角色名称)
用户角色
用户角色标识列,用户编码,角色编码即构成用户角色中间表。注:实际中一个用户足矣具备多种角色。
模块
权限
权限标识,权限编码,权限名称。
模块权限
模块权限标识列,模块编码,权限编码。模块权限表在模块粒度和权限粒度上对模块进行的相应的权限设置,可以简单表述为:具备在某一模块上的某种权限操作。因此将角色和模块权限进行关联将成为角色具备这一粒度层次上的操作权限。
角色权限
至此,用户,角色,权限的划分就形成了,而且可以通过实际中需要的用户,角色,权限的管理程度,进行简化或者增加表。
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
上述查询仅仅说明各表之间的数据关联关系,在实现开发中这样的查询避免使用。
用户,角色,权限的一个很好的参考示例就是Oracle数据库的用户管理机制。Web开发中更多的是涉及到管理用户,管理员,系统管理,模块访问权限,资源访问等问题的处理。
转载于:https://blog.51cto.com/aiilive/1297317
Web开发中的用户角色权限设计总结相关推荐
- Mendix用户角色权限设计思路
在传统的企业应用架构设计中,不可避免需要涉及用户角色权限的设计,其中最为通用的模型是RBAC模型.RBAC(基于角色的访问控制)是指用户通过角色与权限进行关联.即一个用户拥有若干角色,每一个角色拥有 ...
- java 权限管理与用户角色权限设计
实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台 ...
- java用户角色权限管理 只显示姓_java权限管理与用户角色权限设计
实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台 ...
- 响应式HTML网页开发,web开发中的响应式网页设计
概念 响应式网页设计最初是由 Ethan Marcotte 提出的一个概念:为什么一定要为每个用户群各自打造一套设计和开发方案?Web设计应该做到根据不同设备环境自动响应及调整.当然响应式Web设计不 ...
- 用户角色权限设计思路
http://blog.csdn.net/fmx121586/article/details/8025268 转载于:https://www.cnblogs.com/Vlaner/p/3564769. ...
- 【深度解析RBAC用户-角色-权限设计方案,以及核心逻辑代码的讲解】
首先对于b2b.b2c等这一些网站后台,一般情况下都需要权限管理的设计与实现,对于这部分,通常是固定不变的,每次只需要做少量的改动即可. 如何设计这几张表呢? RBAC(基于角色的访问控制),也就是用 ...
- 设计OA系统的用户-角色-权限分配
转载:http://www.cnblogs.com/jsping/archive/2013/01/23/2872972.html 设计OA系统的用户-角色-权限分配 一,前言 本文主要讲述在OA系统 ...
- apache2 wordpress目录权限_小白指南:WordPress中的用户角色和权限
WordPress本身自带了一套用户角色管理系统,这套系统定义了每个用户角色可以做什么,不可以做什么.随着网站的发展,弄懂这些用户角色和权限的问题是非常有必要的.在这篇小白指南中,我们将用图表的形式对 ...
- 后台用户角色权限管理设计
目录 1.概述 2.设计 2.1 用户管理 2.2 角色管理 2.3 权限管理 2.4 用户.角色.权限的关系 3.总结 1.概述 在设计产品后台系统设置时,可根据不同项目的实际需求来设计后台系统设置 ...
最新文章
- Unity插件之NGUI学习(4)—— 创建UI2DSprite动画
- P2B: Point-to-Box Network 点云目标跟踪(CVPR 2020)
- pdf压缩工具_PDF文件过大如何缩小,几步教你完成压缩
- Arduino可穿戴教程保存源文件与打开已经存在的源文件
- Windows 7删需要权限的文件
- Go语言Flag的简单示例
- Spring MVC-02循序渐进之解耦控制器和校验器
- socket 套接字的基本概念
- 将 ext_net 连接到 router - 每天5分钟玩转 OpenStack(145)
- systrace html空白,Android性能优化之Systrace工具介绍(一) _ Systrace生成的trace.html打开空白或者打不开的解决办法...
- discuz! X3 更改域名全程记录 (修改域名的方法)
- sql join语句语法_SQL Left Join语句:示例语法
- python request属性及方法说明
- 离京2小时,快手百亿入云,一切为了「看见」
- PSpice电路模拟
- 转载--32个鲜为人知的自学网站
- android获取显示屏尺寸大小,Android 屏幕各尺寸的获取
- vue前端上传文件夹的插件_vue文件上传插件
- 失败的过去式英文翻译_过去式用英语怎么说
- ANSYS workench 物体受力分析