本文由作者 Dennis_ 发布于社区

近期PMCAFF有好几个帖子都在问权限如何管理,给大家分享下吧。

1. 角色权限管理

说起用户权限管理,绕不开 RBAC模型,

直接上图:

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限(系统资源)进行关联

简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限(系统资源)”的授权模型。在这种模型中,用户与角色之间,角色与权限(系统资源)之间,一般是多对多的关系

我们可管理的权限(系统资源)分为功能权限、数据权限:

功能权限,管理API和页面元素的可控与否、可见与否

数据权限,管理数据表Key-Value的可控与否、可见与否

上述模型主要体现的是对系统资源的权限管理,接下来说说对人的复杂权限管理:

对人的权限管理需求往往是权限继承、权限隔离等,涉及:

  • 公司体系结构(Company Architecture),例如集团公司的管理,涉及总部和子公司、股权往来公司、业务往来公司等

  • 组织架构(Organization),例如部门和子部门、部门领导和员工等

  • 域(Domain),例如中国域和欧洲域

  • 多业态(Multiple formats),按照不同业态对角色进行分类,例如系统类角色、营销渠道类角色等

如何实现呢?(实现方式很多,这里仅简单举例)

  • 在RBAC模型中引入用户组的概念,为用户赋予用户组,为用户组赋予角色,可考虑将用户组按需关联至公司体系结构层、组织架构层、域层

  • 在RBAC模型中引入角色类型的概念,可考虑将其按需关联至多业态层

  • 引入角色上下级继承等

RBAC模型是目前最常用的用户权限模型,但也有弊端,对权限管理粒度太细了,不一定所有业务场景都需要如此复杂的权限模型,酌情选用,也可以酌情调整模型

2. 功能权限的管理

前文说到,功能权限的管理,本质上是在管理系统资源,是在管理一个系统某个页面中的 API和页面元素,比方说一个按钮

我们有两种做法,

  • 一种是写死,即页面下有哪些API和元素,前端工程师直接写死

  • 一种是配置,即允许用户自行可视化的配置这些元素

如需配置,即可引入菜单管理

菜单用来干嘛?

  • 于系统来说,菜单是我们用来管理系统资源(按钮、页面图片、API等)的载体,通过对菜单和依附菜单的系统资源做权限管控,可以实现细粒度的用户权限管理。因此,菜单管理本身属于RBAC权限管理的一部分

  • 于用户来说,菜单最基础的作用是导航,通过菜单,用户可以快速了解系统的功能模块划分、层级结构,也可以快速切换

菜单管理如何实现?

直接上图:

菜单的管理:

  • 菜单名称

  • 菜单编码,即菜单的唯一标识

  • 菜单图标

  • 所属应用,即该菜单属于哪个系统

  • 父级菜单,即配置多级菜单

  • 菜单状态,即停启用

  • 跳转方式,即站内跳转和站外跳转,影响跳转路径的配置

  • 跳转路径,即菜单的URL

  • 打开方式,即跳转后的页面打开方式,在当前页打开,还是新页面

菜单内资源的管理:

  • 资源名称,即该资源的名称,例如「新增用户」

  • 资源路径,即该资源的调用路径,例如「新增用户」的路径是Add User API的地址

  • 资源类型,即API,或页面元素

    • 页面元素,例如一个前端绿色小按钮静态图片

  • 资源关联,例如配置了一个Add User API,又配置了一个绿色的新增用户按钮图片,将其关联起来

这样,我们就可以实现系统资源的可视化配置

3. 数据权限的管理

我们对于数据权限的管理需求,无非是某些数据某个人能看,而另一个不能看之类的。前文正好也讲到,实质上是在做数据表的Key-Value读写权限管理

这里就不上图了,

实现思路也不复杂,可考虑在角色引入

  • 支持选择数据表

  • 支持选择数据表下的Key

  • 支持选择数据表下的Key的Value

  • 支持选择只读、读写

  • 前端页面的逻辑,不要忘记反选哦,很多时候我们的需求就是除了某某之外,其他都能看

↘好文推荐:

所有人问「贴吧之父」俞军

产品经理逻辑学通识

干货 | 产品经理要了解的技术类知识

用户权限管理:最常用的架构模型介绍相关推荐

  1. oracle 权限控制表,Oracle 用户权限管理与常用权限数据字典列表

    用户权限管理 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊 ...

  2. jenkins pipeline、用户权限管理、插件下载地址更改、凭证管理、自由风格项目构建、maven项目构建、常用的构建触发器、邮件发送、SonarQube代码审查

    CI持续集成流程 pipeline jenkins安装pipeline插件: 简单使用: 查看流水线语法: 片段生成器: 2.0以后推荐使用声明式语法:右侧下拉框是一些步骤,都可以自动生成 Decla ...

  3. linux权限命令chgrp,Linux常用命令之用户权限管理chmod、chown、chgrp、umask命令讲解...

    这节课我们重点来学习权限管理命令,说到权限大家可能第一时间能想到的就是读.写.执行 rwx 三种权限,在正式讲解权限命令之前,先简单的介绍一下rwx权限对于文件和目录的不同含义.权限字符权限对文件的权 ...

  4. 基于LDAP的WebLogic虚拟化统一用户权限管理

    0 引言 随着国家电网SG186工程建设的深入,企业门户的建设也开始由省电力公司一级向地市供电公司一级延伸.根据国家电网门户典型设计,河南省电力公司采用了虚拟方式建设全省各地市门户.由于虚拟门户的软. ...

  5. 大型门户网站的RBAC用户权限管理设计

    这是我在网上找的一些设计比较好的RBAC权限管理 不知道,像新浪.搜狐.网易.百度.阿里巴巴.淘宝网的RBAC用户权限这一块,都是这种细颗粒的RBAC设计开发,还是把他们像用户组.角色组.权限组.操作 ...

  6. RDIFramework.NET ━ 9.8 用户权限管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.8 用户权限管理 -Web部分 在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用 ...

  7. 不使用三方包时,如何在ThinkSNS中建立优雅的用户权限管理

    本文主要全面讲解在不适用第三方包的情况下,如何在基于Laravel框架上,研发社交系统ThinkSNS+时,简历一套优雅而不失性价比的用户权限管理体系功能,[内含ThinkSNS真实代码]. 需求场景 ...

  8. ASP.NET MVC 企业级实战 —— 创建用户权限管理范例程序(三)

    上一篇,主要讲解了模型的创建和利用Entity Framework来操作数据库,这篇我们会讲解如何创建控制器和视图. 由于最近很多网友反馈在VS 2012 无法安装NBlock框架模版,故再次声明,N ...

  9. 【SAP Basis】SAP用户权限管理

    SAP用户权限管理 1.术语说明 2.用户授权(添加菜单事务码-功能) (1)主要TCODE: (2)创建用户 SU01 (3)创建角色 PFCG (4)权限验证 3.用户授权(添加系统权限对象-功能 ...

最新文章

  1. PHP PSR-4 Autoloader 自动加载(中文版)
  2. 客户关系管理:客户关系选型
  3. linux 文件批量转utf8
  4. JavaScript学习笔记(十)——学习心得与经验小结
  5. Linux 信号可靠性,同步,异步,多线程信号等介绍
  6. 嘘,我已经瞒着开发解锁APP日志文件抓取及分析啦!
  7. 中小企业如何搭建数据分析平台?
  8. hive分析函数取最新_Hive的分析函数的学习
  9. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一2.8  黄金分割的三分法构图...
  10. Mac系统如何修复MAC硬盘权限
  11. java集合框架之LinkedList
  12. 驾驶员监控系统(DMS)
  13. mysql 视图 多个 select_MySQL中Update、select联用操作单表、多表,及视图与临时表的区别...
  14. vs2013 打开失败 未能完成操作,不支持此接口
  15. 怀旧服服务器维护以后精英怪,《魔兽世界》:看不起怀旧服精英怪,一定吃不了兜着走...
  16. 数字IC后端实现40天速成篇(中)
  17. C语言编程>第六周 ⑥ 输入一串字符,统计大大写字母的个数,并强调统计必须用函数。
  18. Android中显示PDF的问题解决(安卓端使用pdf.js CDN模式)
  19. 夏日当空心深如深渊——雨桐花
  20. android_10.0.0_r41自定义驱动编译+Framework层调用_2(自定义驱动)

热门文章

  1. 从消息到数据湖:看 Apache RocketMQ、Hudi、Kyuubi 最新进展
  2. er图用什么软件_从软件开发生命周期看商业智能 BI 数据仓库建模
  3. android动画封装,Android属性动画封装,快速构建动画
  4. linux vnc用户,给CentOS服务器添加用户并开启vncserver的方法
  5. java db类_Java-jdbc-DBUtils工具类介绍
  6. python竞赛题解答_【一点资讯】用python解NOIP竞赛题 www.yidianzixun.com
  7. Matlab某医院用光电比色计,数理统计答案(研究生).ppt
  8. html配置ss,#WEB安全基础 : HTML/CSS | 0x8CSS进阶
  9. 【阿里云课程】生成模型之GAN优化目标设计与改进
  10. 【AI白身境】学深度学习你不得不知的爬虫基础​​​​​​​