B端系统设计之【权限】详解

news2024/12/24 9:13:28

15b09a432b28793a73a7926e0ec2c24d.png

衡量B端产品系统好坏的一个重要标准就是它的权限是否细致,拓展性是否强。

权限管理是B端产品系统的基础,好的权限管理系统延展性较强,即使业务发生变化也能避免大改和推倒重建。

权限分类

1、功能权限

功能权限是指用户登录系统之后,可以看到哪些模块,可以操作哪些按钮 。企业中的员工因为角色不同,看到的业务模块和操作的功能权限也不相同。

以常见的CRM系统举例,由于销售人员和财务人员的职能不同,那每个人看到的业务模块也不相同,哪怕同样是财务人员,因为职级高低的不同,操作按钮的权限也不尽相同。

1.1 RBAC模型

功能权限一般通过RBAC模型来实现。RBAC是一套成熟的权限模型。在传统的权限模型中,我们一般直接把权限赋予用户,而在而在RBAC中,增加了“角色”的概念,我们首先把权限赋予角色,再把角色赋予用户。这样,由于增加了角色,授权会更加灵活方便。

在RBAC中,根据权限的复杂程度,又可分为RBAC0、RBAC1、RBAC2、RBAC3。其中,RBAC0是基础,RBAC1、RBAC2、RBAC3都是以RBAC0为基础的升级。

2ce46dd14e129b09cdd23ee9c37311b3.png

  • RBAC0,这是RBAC的初始形态,也是最原始、最简单的RBAC版本;

  • RBAC1,基于RBAC0的优化,增加了角色的分层(即:子角色),子角色可以继承父角色的所有权限;

  • RBAC2,基于RBAC0的另一种优化,增加了对角色的一些限制:角色互斥、角色容量等;

  • RBAC3,最复杂也是最全面的RBAC模型,它在RBAC0的基础上,将RBAC1和RBAC2中的优化部分进行了整合;

RABC的好处

  1. 职能划分更谨慎。对于角色的权限调整不仅仅只影响单个用户,而是会影响关联此角色的所有用户,管理员下发/回收权限会更为谨慎;

  2. 便于权限管理。对于批量的用户权限调整,只需调整用户关联的角色权限即可,无需对每一个用户都进行权限调整,既大幅提升权限调整的效率,又降低漏调权限的概率;

1.2 用户-角色-权限

这种权限体系其实就是RBAC0的模式了。这里面又包含了2种:

  • 用户和角色是多对一关系,即:一个用户只充当一种角色,一种角色可以有多个用户担当;

  • 用户和角色是多对多关系,即:一个用户可同时充当好几种角色,一种角色可以有多个用户担当;

c4eab93b56f3ab7dfb7095107871e231.png

如上图:对于左边的用户-角色对应,每个人只能同时拥有一种角色,但是同一个角色里边,可能会含有多个用户(如:李四和王麻子都是业务员);而右边的用户-角色对应,是在左边的基础上,增加了一个用户可拥有多种角色的情况(如:小马哥既是经理,这个经理是管理职,不是销售经理哈,否则出现自己签订合同自己审核的情况,也要负责财务的工作);

那么,什么时候该使用多对一的权限体系,什么时候又该使用多对多的权限体系呢?

我的建议是:尽量可能地使用多对多的权限体系。如果这个系统的功能比较单一、使用人员较少、岗位权限相对清晰且不会出现兼岗的情况,这种情况也可以考虑用多对一的权限体系。

2、数据权限

很多企业对数据的私密性有要求,比如催收系统,催收员只能看到属于自己的那一部分催收订单,而催收组长可以看到自己组下面所有催收员的催收订单。

这个时候就需要通过组织架构来对数据进行权限上的控制。如下图:

cd2412317d69c49e7500816272830429.png

在“用户-角色-权限”的基础上,我们增加了用户与组织的关联关系,组织决定了用户的数据可视权限。但要想真正达到这个效果,我们还需要做2件事:

组织层级划分。如下图,我们需要对组织进行梳理,并划分层级;

83869512444c676380b8b661f60e7be1.png

数据可视权限规则制定。比如:上级组织职能看到下级组织员工负责的数据,而不能看到其他平级组织及其下级组织的员工数据等。(比如上面举的催收员的例子)

通过以上两点,系统就可以在用户登录时,自动判断要给用户展示哪些数据了。

做好功能权限和数据权限,整个权限体系就搭建的差不多了,后期也有较强的拓展性。

如果想系统的学习B端产品知识,可点击:手把手教你做B端产品经理

此外,我建立了各大城市交流群,想入群的小伙伴可加微信:chanpin628 我拉你进群。

b41e5da285046982040a6e4fbf676c6c.jpeg

2ac81ef64af7f7c3b308072ad63e2c84.gif

视频号推荐

关注微信公众号:产品刘 可领取大礼包一份。

e5b4323dc0460fc045d2b8f92b542e9f.gif

··················END··················

ba61e840886356a2fba91478b40ba5ac.png

今日报告:艾瑞咨询 发布2023年H1中国移动互联网流量半年报告,下载报告去公众号:硬核刘大  后台回复“ 移动互联网流量”,即可下载完整PDF文件。

申明:报告版权归  艾瑞咨询  所有,此处仅限分享学习使用,如有侵权,请联系小编做删除处理。

RECOMMEND

推荐阅读

送一门价值665的课和15万字的电子书

手把手教你打造个人IP

线下实战2.0

面试中回答离职原因的万能公式

4b1613cae9a831b8a70d820ef65a08c9.gif

点击“阅读原文”

查看更多干货

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/962884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端面试中Vue的有经典面试题三

11. 网页从输入网址到渲染完成经历了哪些过程? 大致可以分为如下7步: 输入网址; 发送到DNS服务器,并获取域名对应的web服务器对应的ip地址; 与web服务器建立TCP连接; 浏览器向web服务器发送http请求&a…

【自用】西门子s7-200连接显示屏和物联网盒子完整配置过程

总览 1.PLC配置 2.显示屏配置 3.物联网盒子配置 一、PLC配置 1.连接PLC软件 STEP-7MicroWIN V4.0 SP9完整版 链接:https://pan.baidu.com/s/17LMEXnbkQZMPI8Bte24Eug?pwdjsi3 提取码:jsi3 2.PLC配置 打开 PLC 上面的小盖子,把红色按钮…

【代码随想录day23】不同路径 II

题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。那么从左上角到…

3.1.6 练习 基于GPA排名计算本专业保研名单

C自学精简教程 目录(必读) GPA概念回顾 平均学分绩点GPA(Grade Point Average)是对一个学生大学学习成绩的综合的衡量指标。 在前面的文章 本科生学分绩点GPA计算 中,我们知道了什么是平均学分绩点GPA,以及如何计算它。 基于GPA给学生排名 现在我们…

介绍几种使用工具

FileWatch,观测文件变化,源码地址:https://github.com/ThomasMonkman/filewatch nlohmann::json,json封装解析,源码地址:https://github.com/nlohmann/json optionparser,解析选项,源…

4.(Python数模)0-1规划

Python解决0-1规划问题 参考下面文章 源代码 import pulp # 导入 pulp 库# 主程序 def main():# 投资决策问题:# 公司现有 5个拟投资项目,根据投资额、投资收益和限制条件,问如何决策使收益最大。"""问题建模&#x…

9. 微积分 - 导数

文章目录 导数求导实例代码演示:迭代法求解二次函数最小值阶Hi, 大家好。我是茶桁。 我们终于结束了极限和连续的折磨,开启了新的篇章。 不过不要以为我们后面的就会很容易,只是相对来说, 没有那么绕而已。 那么,我们今天开始学习「导数」。 导数 在之前的导论,也就是…

【算法竞赛宝典】求分数精确值

【算法竞赛宝典】求分数精确值 题目描述思路讲解代码展示 题目描述 思路讲解 代码展示 //计算分数的精确值 #include<iostream>using namespace std; int remainder[101], quotient[101]; //remainder:存放除法的余数;quotient:依次存放商的每一位int main() {int m, n,…

[CISCN 2019初赛]Love Math

文章目录 前言考点解题过程 前言 感慨自己实力不够&#xff0c;心浮气躁根本做不来难题。难得这题对我还很有吸引力&#xff0c;也涉及很多知识。只能说我是受益匪浅&#xff0c;总的来说加油吧ctfer。 考点 利用php动态函数的特性利用php中的数学函数实现命令执行利用php7的特…

项目验收有哪些流程?

验收流程 科技计划项目验收/课题验收测试服务的被测对象是国家重大专项、科研课题的软件成果物&#xff0c;可以是一个模块、软件或系统等&#xff0c;也可以是软件套件或软件原型等。测试范围主要来源于课题的合同书/可行吧报告/申报书中的技术指标要求。所出具的科技项目验收…

中东 Shopify 如何使用 Bytebase 构建一站式数据库开发工作流

公司简介 Salla 是一家 2016 年成立&#xff0c;位于沙特麦加的自建站电商平台。 作为中东 Shopify&#xff0c;其最大的特点是支持阿拉伯语建站&#xff0c;并且提供更多适应中东地区特点的本地化服务。截止目前&#xff0c;已有 47,000 家店铺入驻 Salla&#xff0c;商品销售…

并发测试工具 apache-jmeter使用发送post请求JSON数据

目录 1 下载安装 2 汉化 3 创建高并发测试 配置线程组 创建web请求 创建监听器 结果树 汇总报告 为web请求添加token 添加Content-Type用于发送json 4 启动测试 5 查看结果 1 下载安装 官网Apache JMeter - Download Apache JMeter 解压运行 2 2 汉化 打开软件…

CS144环境配置问题

使用wsl来做CS144实验&#xff0c;可能会在编译的时候遇到以下问题&#xff0c;很明显是找不到LIBPCAP&#xff0c;参考链接 使用sudo apt-get install libpcap-dev命令下载该库即可。 CMake Error: The following variables are used in this project, but they are set to N…

什么是精益生产?企业如何实现精益生产?

国内的很多制造企业之所以对“精益生产”持怀疑甚至否度态度&#xff0c;大都经历过实施过程中的“水土不服”难题。抛砖引玉讲一下&#xff1a; 1、精益生产的最典型案例 1991年&#xff0c;在当时整个美国处于一种将被“日本人支配”的恐惧背景下&#xff0c;“精益生产”一…

【FPGA项目】第1个项目,来点个灯吧~

前言 你会FPGA吗&#xff1f;我会点灯&#xff01; 一、概述 作为一名点灯高手&#xff0c;今天就来实际操练一下。 如何点亮&#xff1f; 开发板上带有8个LED灯&#xff0c;我们只需要控制它对应的管脚电平输入即可。 1&#xff1a;灭&#xff1b;0&#xff1a;亮。 如何实…

大语言模型之七- Llama-2单GPU(T4 16G)微调(Fine-tune)

模型预训练colab脚本在github主页面。详见Finetuning_LLama_2_0_on_Colab_with_1_GPU.ipynb 在上一篇博客提到两种改进预训练模型性能的方法Retrieval-Augmented Generation (RAG) 或者 finetuning。本篇博客过一下模型微调。 微调&#xff1a;这是采用预训练的LLM并在较小的…

ESP8266+继电器+MQTT+VUE 实现远程开关灯

超详细教程 – ESP8266继电器MQTTVUE 实现远程开关灯 超详细教程 – ESP8266继电器MQTTVUE 实现远程开关灯 接线图 NC&#xff08;通常闭合&#xff09;与COM&#xff08;公共&#xff09;、NO&#xff08;通常开放&#xff09;与COM 是继电器引脚的不同配置&#xff0c;用于不…

JAVA实现SAP接口

JAVA实现SAP接口 环境spring-bootmaven 1.maven依赖 <dependency><groupId>com.github.virtualcry</groupId><artifactId>sapjco-spring-boot-starter</artifactId><version>3.1.4</version></dependency>2.配置文件 applic…

AI+认知行为疗法,治愈心灵的良药丨青源Workshop「AI+心理干预」观点集锦

当前&#xff0c;抑郁症、焦虑症等心理障碍成为社会关注的焦点&#xff0c;如何有效地缓解和治疗这些心理问题成为一个重要的研究方向。在这样的背景下&#xff0c;如何利用AI等先进技术手段来辅助心理疾病的治疗备受关注。例如&#xff0c;通过语音、脑部MRI辅助诊断器质性抑郁…

C++ 学习之 构造函数 和 析构函数

前言 总的来说&#xff0c;构造函数负责对象的初始化&#xff0c;而析构函数负责对象的清理和资源释放。它们是C面向对象编程中非常重要的概念&#xff0c;用于管理对象的生命周期&#xff0c;确保对象在创建和销毁时都能够正确地进行初始化和清理。 正文 看代码 class perso…