【产品设计】B端产品权限设计~功能权限设计篇

对于B端设计而言,良好的权限设计架构是支持其复杂业务的基础和关键。

在这里插入图片描述

一、什么是权限管理

权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。

简而言之,用户登录系统后,管理用户可以使用那些功能、查看哪些数据,即为权限管理。

权限管理分为两大类:功能权限管理、数据权限管理。

1、功能权限管理:定义登录用户可以看到哪些界面、使用哪些功能。

如:CRM系统可以覆盖售前(线索、拜访、工作汇报等)、售中(合同、订单等)、售后(服务工单、维保等)等多个业务板块的内容,那么不同角色的人员登录系统后,可区分使用不同的功能。负责市场的用户登录系统后使用线索、拜访、工作汇报等功能,负责售后的用户登录后使用服务工单、维保计划等功能。

2、数据权限管理:定义登录用户可以查看哪些数据。

对于同一功能,不同角色的用户可以查看的数据范围是不一样的,如:CRM中的客户数据,对于企业CEO而言,所有的客户CEO都可以查看到;对于区域销售经理而言,仅可以查看到归属于所管辖区域内的客户(华东区域销售经理只查看华东的客户,华南区域销售经理只查看华南的客户);对于普通销售员而言,仅可以查看到自己负责的客户。

二、权限管理模型

1. RBAC模型(Role-Based Access Control)

基于角色的访问控制,是当前大多数权限管理设计的“底座”。

RBAC模型三个关键元素:用户、角色、权限。

用户:登录系统的使用人员,如:张三、李四等。
角色:定义可使用的权限资源的集合,包括:页面、功能、数据等权限资源,如销售业务员角色、财务角色等。
权限:系统的所有权限资源,包括:功能、页面、操作、流程、数据等

RBAC模型,使用角色关联管理用户及权限。解耦用户和权限的对应关系,通过中间对象 – 角色进行关联管理。从而简化系统权限的授权,提升权限管理的可拓展性和可维护性。

举个例子:

企业的销售业务员在CRM系统中需要使用客户管理、拜访管理、订单管理等模块的功能。

在传统模式下,我们需要给销售员A授权这部分的权限,当新增加一个销售员B时,又需要重新授权一遍这部分的权限,增加N个销售员就需要重复授权N遍。

在RBAC模式下,将销售员需要的权限都同一授权给“销售业务员”这个角色,增加销售员时,只需要将“销售业务员”的角色给到销售员即可。同时,销售员如果需要新增或减少功能,只需要修改角色授权的资源即可,无需一个一个销售员进行调整。
在这里插入图片描述

2. 基于RBAC模型的“变形”

基于RBAC模型的变形,将功能权限和数据权限区分管理,进一步提升权限管理的灵活性。目前,在paas平台、saas+paas的产品中使用较多。

通过职能进行功能权限管理,通过角色进行数据权限管理。职能管理是“权”,角色管理是“限”,一个用户的权限=职能管理+角色管理。

将功能权限与数据权限分开管理,对两种权限分别做一些复杂的组合权限控制时,可以不用考虑互相影响。如:通过角色权限+角色组+共享规则+特例规则等,组成数据权限满足复杂的权限要求
在这里插入图片描述

三、功能权限管理

功能权限管理:定义登录用户可以查看到哪些界面、使用哪些功能等。

1. 功能权限资源分类

常见的功能权限管理可以定义到模块、页面、按钮、字段、流程、业务类型等层级。

  • 模块权限:指业务功能板块的访问权限,如:客户管理、线索管理。一般情况下,分配模块权限,功能模块下的页面、按钮均同步授予权限,如:分配客户管理权限,客户列表、客户详情、新增客户按钮、删除客户按钮等同步授予权限。
  • 页面权限:指特定的功能页面的访问权限,如:客户列表、客户详情。一般情况下,分配页面权限,页面下的按钮均同步授予权限,如:分配客户列表权限,新增客户、删除客户等按钮同步授予权限。
  • 按钮权限:指特定功能按钮的操作权限,如:新增、删除、修改、提交等按钮。
  • 字段权限:指功能模块的字段操作权限,字段权限控制多出现在paas平台,如:客户的客户名称字段的读写、导出权限。
  • 流程权限:流程权限控制多出现在paas平台,在paas平台上支持用户自定义流程并支持设定流程使用权限,包括业务流程、审批流程。流程权限较少单独作为一项权限资源进行管理,通常流程权限和按钮权限是一致的,大多数流程都是通过按钮去触发流程执行,控制按钮权限也等于控制了流程权限。
  • 业务类型权限:较少使用的权限资源控制,多出现在paas平台上。paas平台支持用户定义对象的不同业务类型,且支持不同角色可使用不同的业务对象。如:客户对象可定义直销客户、渠道客户两种业务类型,那么负责直销的销售使用直销客户,负责渠道的销售使用渠道客户,两种不同的业务类型的客户,字段模型、流程等都可能不同。

在这里插入图片描述

2. 功能权限管理基本原则

① 功能权限分配遵循功能优先级,分配优先级较低的权限资源时,必须先分配其归属的优先级高的权限资源。

对于常用权限资源,可以分成三个优先级,且权限资源是个层级结构,有归属关系。权限资源进行分配时,分配低优先级的权限资源时,必须分配其归属的高优先级的权限资源。

如:分配“新增客户”的按钮权限给到用户,那么需要把“新增客户”按钮所在的【客户列表】页面分配给当前用户,同时为了分配【客户列表】页需要把{客户管理}模块分配给到用户。否则,只分配新增客户按钮的权限,那按钮所在的页面用户无法查看,这个按钮也就无法操作。

所以,大多数产品的功能权限管理,在对角色授予权限时,勾选低优先级的权限资源时,会默认自动将其归属的父级权限资源默认勾选上。如:勾选按钮时,会默认将按钮所在的页面,页面所在的模块对应勾选上。

在这里插入图片描述

注:图中将流程归为第一优先级是因为,定义业务流程时,可能跨功能模块、可能涉及多个页面跳转等。如:销售线索转商机的流程,当销售线索满足一定的条件时,可以点击按钮触发流程,自动生成一条商机记录。那么这个流程就涉及了两个功能模块:线索模块、商机模块。

② 登录用户拥有多个角色时,可访问多个角色关联的权限资源的总和。

举例说明:用户A 拥有 角色1、角色2 两个角色,角色1 可访问页面I、按钮I、流程I,角色2可访问页面I、流程I、页面II,那么用户A即可访问页面I、按钮I、流程I、页面II。

③ 可支持管理的权限资源类型越多,整体的维护及开发成本越高。

功能权限管理并非支持管理的权限资源类型越多越好,这与系统整体的开发与维护成本息息相关。可管理的权限资源类型越多,成本越高。需要根据实际的管理需要去确定功能权限管理需要支持的权限资源类型。

目前大多数的产品功能权限管理支持到“模块-页面-按钮”层级,或者是“页面-按钮”层级。较为常用的系统设计中,模块、页面、按钮这三种类型的权限资源只需要在系统后台完成资源注册,即可对这部分权限资源进行管理。如下方截图:
在这里插入图片描述
以字段的访问、操作权限为例,当我们希望将权限管理拓展到字段层级时:

  1. 首先需要明确对象字段中的文名称与数据库对象表的列名的对应关系,用户定义对象字段的读写、导出等权限时,需要根据字段的中文名称去做选择,如果只展示数据库表名,对于用户而言,是无法理解和操作的。
  2. 其次在用户访问对象数据、编辑对象数据等操作时需要对用户权限进行查验,验证用户是否有权限访问、操作字段。

相对于常用的“模块-页面-按钮”/“页面-按钮”的权限控制,只需要控制页面、按钮的显示/隐藏,整体的维护和开发成本是高出一大截的。

四、功能权限管理的梳理模板

在产品实施交付的过程中,需要对用户的功能使用权限进行梳理,对于不同职能的用户授权不同的功能。

下面分享一份功能权限管理的梳理模板:
在这里插入图片描述
注:文档模板中并未将字段操作权限的梳理呈现出来,原因是:各功能对象的字段较多,实际情况下,并不会和业务人员逐个字段核对是否需要查看、导出等权限。更多的是,一些特例情况会在调研、沟通的过程中会提出,可在表中通过备注记录

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

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

相关文章

使用 Redux 管理全局状态

Redux 是个状态集中管理框架,状态可以跨组件共享,状态更新后,调用监听器。其实状态可以认为就是个全局对象,为什么要做一个框架来管理呢?如果我们自己使用一个全解字典来管理状态是不是也行?如果不做任何控…

想在游泳健身的同时畅听音乐,随时哈氪漫游这款IP68防水的骨传导耳机

平时健身的过程中,音乐是许多健身爱好者的忠实伴侣。无论是在室内的健身房,还是户外的自然风光中,一副优质的耳机可以极大地提升我们的锻炼体验。现在市面上专为运动设计的耳机选择非常多,我喜欢用骨传导耳机,目前在用…

深入理解多线程编程

title: 深入理解多线程编程 date: 2024/4/25 17:32:02 updated: 2024/4/25 17:32:02 categories: 后端开发 tags:线程同步互斥锁死锁避免竞态条件线程池异步编程性能优化 第一章:多线程基础 1.1 线程概念与原理 线程:在操作系统中,一个程序…

ADB常用命令

大家好,今天给大家分享一些ADB的常用命令,我们作为测试了解ADB命令能给我们带来哪些好处呢? 1、ADB 命令可以帮助测试人员与Android设备进行交互,如安装、卸载应用,获取设备信息等,便于更深入地测试设备功能…

世强硬创获昕感科技授权代理,SiC MOSFET实现超低导通电阻

近日,世强先进(深圳)科技股份有限公司(下称“世强先进”)获北京昕感科技有限责任公司(下称“昕感科技”,英文名:NEXIC)授权代理,为光伏、储能、电网、新能源汽…

C# 给图片添加文字水印

目录 应用场景 开发运行环境 方法说明 方法代码 调用示例 小结 应用场景 在某些应用项目(如电子档案信息管理)中,查看电子图片信息是经常使用到的功能,此时我们就需要给显示在浏览器中的图片添加文字水印版权或提示信息。…

Golang对接Ldap(保姆级教程:概念搭建实战)

Golang对接Ldap(保姆级教程:概念&搭建&实战) 最近项目需要对接客户的LDAP服务,于是趁机好好了解了一下。LDAP实际是一个协议,对应的实现,大家可以理解为一个轻量级数据库。用户查询。比如&#xff…

力扣HOT100 - 114. 二叉树展开为链表

解题思路&#xff1a; class Solution {List<TreeNode> list new ArrayList<>();public void flatten(TreeNode root) {recur(root);for (int i 1; i < list.size(); i) {TreeNode pre list.get(i - 1);TreeNode cur list.get(i);pre.left null;pre.right…

使用Shell终端访问Linux

一、实验目的 1、熟悉Linux文件系统访问命令&#xff1b; 2、熟悉常用 Linux Shell的命令&#xff1b; 3、熟悉在Linux文件系统中vi编辑器的使用&#xff1b; 4、进一步熟悉虚拟机网络连接模式与参数配置&#xff01; 二、实验内容 1、使用root帐号登陆到Linux的X-windows…

【Qt 学习笔记】Qt常用控件 | 输入类控件 | Combo Box的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 输入类控件 | Combo Box的使用及说明 文章编号&#xff…

【Qt 学习笔记】Qt常用控件 | 显示类控件 | LCD Number的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 显示类控件 | LCD Number的使用及说明 文章编号&#xf…

wps屏幕录制怎么用?分享使用方法!

数字化时代&#xff0c;屏幕录制已成为我们学习、工作和娱乐中不可或缺的一部分。无论是制作教学视频、分享游戏过程&#xff0c;还是录制网络会议&#xff0c;屏幕录制都能帮助我们轻松实现。WPS作为一款功能强大的办公软件&#xff0c;其屏幕录制功能也备受用户青睐。本文将详…

代码随想录:二叉树15-17

目录 404.左叶子之和 题目 代码&#xff08;后序递归&#xff09; 代码&#xff08;前序迭代&#xff09; 513.找树左下角的值 题目 代码&#xff08;层序迭代&#xff09; 112.路径总和 题目 代码&#xff08;前序迭代&#xff09; 112.路径总和II 题目 代码&…

Linux读写文件

前言 学习了文件系统&#xff0c;就能理解为什么说Linux下一切皆文件。 语言层面的操作 在c语言的学习中我们可以使用fopen()函数对文件进行操作。 int main() {//FILE * fp fopen("./log.txt", "w");//FILE * fp fopen("./log.txt", "…

TablePlus for Mac/Win:开启高效数据开发新纪元

在当今数字化时代&#xff0c;数据的重要性日益凸显。无论是企业还是个人&#xff0c;都需要一款强大而实用的本地原生数据开发软件来提升工作效率。而 TablePlus for Mac/Win 正是这样一款卓越的工具&#xff0c;它为用户带来了全新的体验&#xff0c;让数据开发变得更加轻松、…

第1次作业

目录 重点内容提要一、误差度量二、浮点数系统三、误差传播四、数值稳定性 作业解析 重点内容提要 一、误差度量 二、浮点数系统 三、误差传播 四、数值稳定性 作业解析

快速部署 Garnet

快速部署 Garnet Garnet 是 Microsoft Research 推出的一种新型远程缓存存储&#xff0c;其设计速度极快、可扩展且延迟低。 Garnet 在单个节点内是线程可扩展的。它还支持分片集群执行、复制、检查点、故障转移和事务。它可以在主内存以及分层存储&#xff08;例如 SSD 和 Az…

GRASSHOPPER电池Expression

Grasshopper中如果要实现简单的条件if语句的效果&#xff0c;可以使用电池Expression。 举例&#xff1a;获取两个数的差值&#xff0c;永远用大数减去小数

OpenUI在windows下部署使用

OpenUI OpenUI是一个基于Python的AI对话平台&#xff0c;支持接入多种AI模型。 通过聊天的方式来进行UI设计&#xff0c;你可以通过文字来描述你想要的UI界面&#xff0c;OpenUI可以帮你实时进行渲染出效果 安装OpenUI 这里预设你的电脑上已安装git、Python和pip&#xff0…

OSI网络七层协议<随手笔记>

1.OSI OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即开放式系统互连。 一般都叫OSI参考模型&#xff0c;是ISO组织在1985年研究的网络互连模型。该体系结构标准定义了网络互连的七层框架&#xff08;物理层、数据链路层、网络层、传输层、会话层、表示层…