PMS-授权中心
概述
授权中心用基于角色的访问控制思想(RBAC-Role Based Access Control)来实现各个业务系统的功能权限及数据权限控制。功能权限是指能否进入页面及使用页面上的操作。数据权限控制主要有组织,品类,项目三个维度。组织层级比较多,目前有一级单位(股份公司),二级单位(工程局及区域联采中心等),三级单位,四级单位,五级单位等。
关于组织
一个人属于某个组织,可以拥有多个组织的角色。需求明确指出不能采用切换组织的方式来做。要一次性查询角色组织的本级或本下级的相关数据。
组织的管理层级有一级单位(股份公司),二级单位(工程局及区域联采中心等),三级单位,四级单位,五级单位。
组织的机构性质有公司及区域联采中心。
后来金服又提出需要扩展是否法人单位及三证相关信息,这些信息仅仅是金服在用,没有复杂的业务逻辑。
关于品类:
品类有两大类,即物资类和分包类,其中物资类包括物资,设备,专业服务;分包类包括劳务分包,专业分包。每个一级品类又包括几十种二级品类。
目前的管控需求是控制到二级品类。二级品类上页面需要设置采购策略及映射商品类别。
关于用户:
用户主要有登录名,姓名,职位,手机号,用户身份等重要属性。整个平台的用户都存储在一张表中,用户身份包括采购商,供应商,供应商子帐号,总包方,分包方,劳务人员,平台管理员,共7种。这7种用户类型可以按业务规则进行组合,随意组合可能不具有意义。其中总包方,分包方,劳务人员主要是劳务使用。
用户分类
用户分为平台级,组织级,项目级三类。
1. 顾名思义,平台级用户所属组织为平台,主要是运营,客服,售后,开发团队相关的人员等等。比如给一个运营妹子分配一个八局的合规性检查人员的角色,数据权限为本下级,品类权限是物资,那么她就只能管理八局本下级物资相关的合同,订单,结算单等数据。
2.组织级用户主要是股份公司,二级单位(局级),三级单位(号码公司等),四级单位,五级单位等领导及业务人员(招投标,合同,订单,结算,合规性检查等等人员)。强调一下,这些公司可能是法人单位也可能不是,比如一些大的经理部也可能纳为五级单位。有一点必须遵守,项目不能添加到组织树中。
3.项目级用户,即项目现场的收货人员,进度检查人员,质量检查人员,安全检查人员等等。
关于角色:
角色主要有所属系统,所属组织,角色名称,角色类型等属性,可以设置功能权限。因为组织机构树层级比较多,各个组织的管理需求又各不相同。所以只能让各个组织自己去规划角色。但是我们要实现分级授权。比如平台可能看到几乎所有的权限(有些权限只能开发或运维同事使用),同时也要精确控制股份公司,二级单位(局级),三级单位,四级单位,五级单位的权限设置。
关于数据范围:
数据范围有平台级,股份公司级,(按组织查看)本级,(按组织查看)本上级,(按组织查看)本上级等。不同的业务有不同的管控需求,使用不同的数据范围控制。
比如模板管理使用本上级的数据范围控制。比如一局一分公司在招标过程中使用招标公告模板时,可能用户最想要的功能是先查看本级的招标公告模板,然后还可以查看上级的招标公告模板。
再比如柖标管理使用本下级的数据范围控制,同时还有创建人,采购经办人等特殊逻辑。
重要约定:
1. 授权中心要支持多系统授权。因此它的实现要尽量不要和具体系统的业务耦合,保证其单一性,可扩展性。
2. 功能点分为系统级,平台级,用户级。
a)系统级:比如授权中心的系统管理,菜单管理,组织迁移等只能由开发人员或运维人员使用。
b)平台级:比如供应商注册审核,准入信息变更,供应商管理,商城广告位管理,商城推荐管理等运营后台相关功能只能由运营团队,客服团队等使用的功能。
c)用户级:业务方的管理功能。不再区别是股份公司,二级单位,三级单位等层级,只需采用分级授权体系层层控制即可。比如有些功能只能由股份公司级使用,就只分配给他这一级就可以了。至于他要不要再分配到下级由他们自己控制。
3. 精确控制每一个组织的可见权限集,由此来实现分级授权体系。
4. 业务角色分为业务角色,功能角色两种。
a) 业务角色指业务系统中相关业务职位、权力的代表,比如采购经办人,采购员,采购经理,商务部经理,商务部业务人员,领导,合规性检查人员,进度管理人员,质量管理人员,安全管理人员,项目经理,财务,法务。
b)功能角色指业务系统中的各操作人员的权限集合。
5. 不允许同一个人有多个组织的功能角色,只能拥有同一个组织的多个功能角色。
6.如果一个人拥有某组织的系统管理员功能角色,就不能再拥有其它功能角色了。但是他可以拥有其它的业务角色。
7. 多个业务系统使用统一的登录页面。
8. 多个业务系统中的项目库,产品库,企业库(即组织机构,比如采购商,供应商,总承包,分包单位, 建设单位,设计单位,监理单位,政府部门,施工企业等单位基本信息)使用一套表存储,不能每个业务系统自己搞。
9.组织权限设置需要有两个层级:组织级系统管理员,项目级系统管理员?
我感觉既然选择框架,用security比较好。可以和spring其它模块无缝接合,比如websocket stomp。
我感觉security,shiro中不应该有role授权,可以把role当成一个特殊的authority。security,shiro都整了两个概念(role, authority)反而增加了复杂度。
Spring Security 入门系列
http://www.spring4all.com/article/428
https://springcloud.cc/spring-security-zhcn.html
springBoot+springSecurity 数据库动态管理用户、角色、权限
https://www.cnblogs.com/softidea/p/7068149.html
http://blog.csdn.net/u013412066/article/details/50667960
PMS-授权中心的更多相关文章
- 从壹开始 [ Ids4实战 ] 之七 ║ 客户端、服务端、授权中心全线打通
1.经过元旦两天的全力整改,终于在这新的一年,完成了我的布道生涯的第一个大步走 —— 那就是客户端(VUE).服务端(ASP.NET Core API).授权中心(IdentityServer4)的大 ...
- Asp.Net Core 中IdentityServer4 授权中心之应用实战
一.前言 查阅了大多数相关资料,查阅到的IdentityServer4 的相关文章大多是比较简单并且多是翻译官网的文档编写的,我这里在 Asp.Net Core 中IdentityServer4 的应 ...
- Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式
一.前言 上一篇我分享了一篇关于 Asp.Net Core 中IdentityServer4 授权中心之应用实战 的文章,其中有不少博友给我提了问题,其中有一个博友问我的一个场景,我给他解答的还不够完 ...
- Day16_授权中心
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 总结 1 ...
- 使用Abp vnext构建基于Duende.IdentityServer的统一授权中心(一)
原来看到很多示例都是基于IdentityServer4的统一授权中心,但是IdentityServer4维护到2022年就不再进行更新维护了,所以我选择了它的升级版Duende.IdentitySer ...
- Spring Authorization Server 实现授权中心
Spring Authorization Server 实现授权中心 源码地址 当前,Spring Security 对 OAuth 2.0 框架提供了全面的支持.Spring Authorizati ...
- IdentityServer4 简单使用,包括api访问控制,openid的授权登录,js访问
写在前面 先分享一首数摇:http://music.163.com/m/song?id=36089751&userid=52749763 其次是:对于identityServer理解并不是特别 ...
- web登录与授权
web开发已经流行了很多年,登录与授权也基本有一套通用的流程,下面是我自己常用的登录与授权方式,欢迎大家讨论与吐槽. 概念: 登录是过程,授权是结果.登录只是为了获得页面的访问权限 or 操作权限 o ...
- IdentityServer4 指定角色授权(Authorize(Roles="admin"))
1. 业务场景 IdentityServer4 授权配置Client中的AllowedScopes,设置的是具体的 API 站点名字,也就是使用方设置的ApiName,示例代码: //授权中心配置 n ...
- spring cloud+dotnet core搭建微服务架构:Api授权认证(六)
前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...
随机推荐
- 用 JS 写 (轮播图 / 选项卡 / 滑动门)
页面中经常会用到各式各样的轮播图,今天贺贺为大家介绍一种常用的方法,对于JS我们需要举一反三,一种方法可以对多个轮播样式进行渲染. <head> <meta charset=&quo ...
- SoapUI 访问代理设置
SoapUI 访问代理设置 by:授客 QQ:1033553122 问题描述: 运行SoapUI时,发现接口访问不通,如下图,提示"Connection to http://127.0.0. ...
- NoHttp封装--01
NoHttpActivity public class NoHttpActivity extends Activity implements View.OnClickListener { privat ...
- (后端)出现org.hibernate.NonUniqueResultException的原因即解决办法
百度出来的资料解决问题: 一个问题,事务处理完毕以后页面没有刷新.刚开始以为是前台js的问题,后来检查js没有任何问题,跟踪到后台发现后台报错了,错误信息如下:org.hibernate.NonUni ...
- system.transfer.list版本进化
从android5.0开始之后,recovery升级包中不再升级system.img,而是升级system.new.dat+system.transfer.list的这种文件组合,经过android版 ...
- mysqlclient and mysql-python安装出错方法
Collecting mysql-python Using cached https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68d ...
- Apache POI导出excel表格
项目中我们经常用到导出功能,将数据导出以便于审查和统计等.本文主要使用Apache POI实现导出数据. POI中文文档 简介 ApachePOI是Apache软件基金会的开放源码函式库,POI提供A ...
- 超简单,Centos7 安装 rabbitMQ
首先声明,本人是Linux新手一枚.经历了在阿里云Centos上部署rabbitMQ与重装的痛苦经历,后多方查找终于找到了简单方法.Linux高人来说请跳过本篇文章,新手可以试试. 1.设置Cento ...
- 基于Bootstrap表单验证
基于Bootstrap表单验证 GitHub地址:https://github.com/chentangchun/FormValidate 使用方式: 1.CSS样式 .valierror { bor ...
- Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)【转】
Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息.它定义在include/linux/sched.h文件中. 谈到task_str ...