作者:Vance
链接:https://www.zhihu.com/question/20313385/answer/118095995
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

后台产品狗,之前踩过权限控制系统的大坑。

做完项目整体复盘,发现坑爹的不是难设计,而是对现有权限控制情况的了解程度低。

如果在平台设计之初就考虑到权限控制的问题,是好事。

越早进行系统的考虑,成本越低,效果也越好。

最好的当然是之前有成熟的系统可以接入复用。

如果没有的话,那就得尝试自己理解这一套东西,并深入了解现有情况再进行设计了。

谈到权限控制的设计,需要先理清楚定义和原理。

所以我们需要看到权限控制中,控制的本质,也就是说控制的是什么?

其实是:用户与可以进行的行为的关联关系

这句话中有3个关键词:用户、行为、关联关系。

衍生出如下几个问题

关于用户

  • 用户是怎么分类的(用户角色)
  • 用户和用户之间是否有关系?如果有,是什么关系?关系是什么结构的?
    • 如公司组织架构那种层级分明的树形结构

关于行为

  • 怎么将行为分类(一般来说按照行为目的区分、按照行为业务类别区分、按照行为与系统的交互类型区分)

    • 例如,按照行为与系统的交互类型区分

      • 数据权限:指的是用户有权操作的那部分数据(读、写)
      • 功能权限:对使用人群在功能修改使用等方面权利的限制
  • 行为之间是否有层级和依赖关系,是怎么样的依赖关系

关于关联关系

  • 是一对一还是一对多,如果有父子层级之分,是继承关系还是独立存在。

这是概念层的问题,具体到工作的设计当中,用于梳理需求会有一些帮助,主要还是用于梳理基础概念。

一句话概括就是:权限系统维护的是人和可进行行为的关联关系。

那么系统的每个用户可以看做是一堆可以进行的行为的集合。

这句话有点不好理解的话,你就按照用户画像那么理解,在权限系统里,每个用户身上打满了一堆可以进行行为的标签。

<img src="https://pic4.zhimg.com/dedc9917bf9a5380f155424ddb79e3c3_b.png" data-rawwidth="695" data-rawheight="370" class="origin_image zh-lightbox-thumb" width="695" data-original="https://pic4.zhimg.com/dedc9917bf9a5380f155424ddb79e3c3_r.jpg">

那么权限控制系统的原理呢? 其实很简单,就是: 用户在访问时,通过了解用户具有的可以进行的行为的集合,决定用户可以看到什么菜单,以及在什么菜单下能使用什么功能,并且具备什么样操作数据的能力。

了解完概念,那么在动手之前,是了解清楚需求及目前的解决方案。 比如: 现在都有什么类型的用户? 每个类型的用户在使用功能上有什么区分? 现在一级菜单和二级菜单都有哪些? 每个页面上面通用的和需要控制的功能都有什么? 哪些数据的读写需要根据用户身份做区分? PS:大部分没有权限控制之前,很多权限控制是写死在代码里了,需要梳理清楚,避免踩坑。

好了,其实回答完以上问题,应该能了解自己或公司对权限系统的基本需求了,按照我的习惯,就可以着手开始写use case了。

具体的情况,具体分析,最大的难点在于对现有情况的了解,了解清楚现有情况,其实设计难度不大。

更多阅读:RBAC权限管理

https://blog.csdn.net/painsonline/article/details/7183613/

转载于:https://www.cnblogs.com/hao-1234-1234/p/9850967.html

如何设计网站权限系统(转载)相关推荐

  1. 如何设计一个权限系统

    本文来说下如何设计一个权限系统 文章目录 概述 权限模型 RBAC0模型 RBAC1模型 RBAC2模型 RBAC3模型 用户组 组织 职位 含有组织/职位/用户组的模型 授权流程 表结构 权限框架 ...

  2. 设计一个权限系统-RBAC

    系统安全一直是在系统开发中不可规避的问题,而权限控制又跟系统安全密不可分,大到用户的访问,小到一个页面的按钮,都有可能涉及到权限的控制. RBAC权限模型 迄今为止最为普及的权限设计模型是RBAC模型 ...

  3. 面试题:如何设计一个权限系统?

    点击上方"码农进阶之路",选择"设为星标" 回复"面经"获取面试资料 来源:cnblogs.com/iceblow/p/11121362.h ...

  4. 最经典的权限设计同样也是最糟糕的权限设计,权限设计理念最关键第一步之间的PK...

    大概在接近10年前做VB版本的ERP系统,其中的权限分配也完全是类似下面的设计思路,分若干个模块.有新增.删除.编辑.删除.扩展1.扩展2.扩展3等操作权限定义,当时也很佩服设计类似权限系统的人,感觉 ...

  5. [转载]说说大型高并发高负载网站的系统架构

    转载请保留出处:俊麟 Michael's blog (http://www.toplee.com/blog/?p=71) Trackback Url : http://www.toplee.com/b ...

  6. php写网页6,基于ThinkPHP6+AdminLTE框架开发的响应式企业网站CMS系统PHP源码,ThinkPHP6开发的后台权限管理系统...

    源码介绍 基于最新ThinkPHP6+AdminLTE框架开发的响应式企业网站CMS系统PHP源码,基于最新版本的ThinkPHP 6.0.0RC3框架,后台前端框架采用AdminLTE.系统的核心理 ...

  7. 【转载】说说大型高并发高负载网站的系统架构

    转载自:Just Do IT (http://www.toplee.com) lee@toplee.com 我在Cernet做过拨号接入平台的搭建,而后在Yahoo3721负载搜索引擎前端平台开发,又 ...

  8. SharePoint 2010设计(Design)权限能操作的网站操作菜单项

    在SharePoint平台中有经典的5大权限:完全控制.设计.参与讨论.只读.仅查看.其中设计权限与完全控制权限有些相似,而只读和仅查看基本上差不多,参与讨论权限主要是针对内容管理的.设计权限在Sha ...

  9. 数据库设计系列[04]组织结构加入权限系统

    1引言 接着上一篇随笔"数据库设计系列[03]权限系统":在上篇随笔中,只是简单地介绍基于角色和操作访问控制模型,能把权限控制到页面和按钮.CDM图: 2 新的需求:组织结构 比如 ...

最新文章

  1. 《水泥公司信息管理系统》Access学习心得
  2. Centos 用户组管理
  3. Hadoop hdfs 获取文件列表代码示例
  4. Linux 查看 MySQL 版本的四种方法
  5. 下方向键_求助:Deepin-linux-opencv方向键
  6. 一款APP设计的从0到1之:Android设计规范篇(转载)
  7. BCD码干什么用的?
  8. Scrum板与Kanban如何抉择?waysupaie板与按照oukotb
  9. NLPIR分词系统的使用
  10. JS 字符串变量全局替换
  11. 【知识地图】开发测试全栈 (未完待续)
  12. ppt模板怎样用到html中,教你如何自己制作PPT模板及使用模板方法图文介绍
  13. 如何利用官方SDK文件来辅助开发?
  14. 数字仓储系统内涵构成及系统架构
  15. 王者荣耀游戏高清壁纸(手机|电脑),来袭
  16. 构建一个 CLI 工具
  17. 5 打印选课学生名单 (25 分)
  18. 织梦php模板在哪个文件夹,织梦模板如何修改默认templets模板文件夹名称的方法...
  19. [离散数学]命题逻辑P_7:范式
  20. 基于函数微分推导出的5个近似公式

热门文章

  1. ubuntu 安装redis
  2. Linux系统普通用户切换省略输入用户名密码
  3. ActiveMQ学习笔记(二) JMS与Spring
  4. HDOJ 1070 排序 水
  5. arcgis server for flex中文乱码问题(转)
  6. bzoj 3100 排列
  7. HTML meta标签总结
  8. Flask web开发之路四
  9. 博客园写代码发家的大牛
  10. jquery-$()函数的用法及一些常用的选择器