概述

授权中心用基于角色的访问控制思想(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-授权中心的更多相关文章

  1. 从壹开始 [ Ids4实战 ] 之七 ║ 客户端、服务端、授权中心全线打通

    1.经过元旦两天的全力整改,终于在这新的一年,完成了我的布道生涯的第一个大步走 —— 那就是客户端(VUE).服务端(ASP.NET Core API).授权中心(IdentityServer4)的大 ...

  2. Asp.Net Core 中IdentityServer4 授权中心之应用实战

    一.前言 查阅了大多数相关资料,查阅到的IdentityServer4 的相关文章大多是比较简单并且多是翻译官网的文档编写的,我这里在 Asp.Net Core 中IdentityServer4 的应 ...

  3. Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式

    一.前言 上一篇我分享了一篇关于 Asp.Net Core 中IdentityServer4 授权中心之应用实战 的文章,其中有不少博友给我提了问题,其中有一个博友问我的一个场景,我给他解答的还不够完 ...

  4. Day16_授权中心

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 总结 1 ...

  5. 使用Abp vnext构建基于Duende.IdentityServer的统一授权中心(一)

    原来看到很多示例都是基于IdentityServer4的统一授权中心,但是IdentityServer4维护到2022年就不再进行更新维护了,所以我选择了它的升级版Duende.IdentitySer ...

  6. Spring Authorization Server 实现授权中心

    Spring Authorization Server 实现授权中心 源码地址 当前,Spring Security 对 OAuth 2.0 框架提供了全面的支持.Spring Authorizati ...

  7. IdentityServer4 简单使用,包括api访问控制,openid的授权登录,js访问

    写在前面 先分享一首数摇:http://music.163.com/m/song?id=36089751&userid=52749763 其次是:对于identityServer理解并不是特别 ...

  8. web登录与授权

    web开发已经流行了很多年,登录与授权也基本有一套通用的流程,下面是我自己常用的登录与授权方式,欢迎大家讨论与吐槽. 概念: 登录是过程,授权是结果.登录只是为了获得页面的访问权限 or 操作权限 o ...

  9. IdentityServer4 指定角色授权(Authorize(Roles="admin"))

    1. 业务场景 IdentityServer4 授权配置Client中的AllowedScopes,设置的是具体的 API 站点名字,也就是使用方设置的ApiName,示例代码: //授权中心配置 n ...

  10. spring cloud+dotnet core搭建微服务架构:Api授权认证(六)

    前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...

随机推荐

  1. 转: Laravel 自定义公共函数的引入

    来源:Laravel 自定义公共函数的引入 背景习惯了 使用 ThinkPHP 框架,有一个公共方法类在代码编写上会快捷很多,所以有必要在此进行配置一番.测试框架:Laravel 5.5步骤指导1. ...

  2. Linux  改动inittab文件及忘记密码等导致无法进入系统的解决办法

    改动inittab文件及忘记密码等导致无法进入系统的解决办法[摘] by:授客 QQ:1033553122 inittab是linux的系统启动模式配置文件,在”/etc“文件目录下没,其内容是: # ...

  3. beego+vue.js分离开发,结合发布,简单部署

    大家知道,golang开发的东西部署简单是它很大的卖点,一般的应用,生成的可执行文件直接放服务器上运行即可,不需要任何环境.当然,大型的应用才需要比如mysql,nginx等. 但是当vue.js出现 ...

  4. C++ UTF8 UrlEncode(宽字符)

    为了支持C++ UrlEncode之后的字符串能够被C#所识别(windows phone 下C#只能支持UTF8与 Unicode). 所谓的 UTF8 UrlEncode 也只是宽字符串 UrlE ...

  5. JDBC-Statement,prepareStatement,CallableStatement的比较

    参考:https://www.cnblogs.com/Lxiaojiang/p/6708570.html JDBC核心API提供了三种向数据库发送SQL语句的类: Statement:使用create ...

  6. 03-14_WLST配置现有的Domain

    本文重点: WLST在线模式配置现有的domains. WLST离线模式配置现有的domains.         1.WLST在线模式配置现有的domains 由于和一个活动的domain进行交互, ...

  7. pandas的resample重采样

    Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法. 降采样:高频数据到低频数据 升采样:低频数据到高频数据 主要函数:r ...

  8. javascript获取DOM对象三种方法

    1. getElementByID() getElementByID()方法可返回对拥有指定ID的第一个对象的引用 2. getElementByTagName() getElementByTagNa ...

  9. July 10th, Week 29th Sunday, 2016

    Everything is good when new, but friend when old. 老朋友更醇香. When did you meet with your last friends l ...

  10. python2.7.15 + PyQt4部署

    安装python模块首先想到的就是 https://pypi.org/,但在上面下载的PyQt4的包却找不到安装的方法,于是找找试其它方法,下面介绍通过pip安装whl的安装方式 1.先打开 http ...