一 、简介

权限管理对有组织结构的系统重要性无需多言,没有权限限制的管理、办公系统将没有可用性可谈。说实话权限管理系统实现起来没有任何门槛,直接几个if else判断就能解决现实需求 ,但是,如果需要灵活、健壮、可维护、可扩展达,使整个开发组满意的的权限管理系统,那就另当别论了。

那么我们来看下权限实现的基本方式:代码中固定权限代码(A),对这段代码名一个代号,然后在系统中建一个(权限/角色),最后把代码(A)对应的代号关联到(权限/角色),这样把系统使用者关联(权限/角色)就实现了系统权限的管理。也许你碰到过更为复杂的权限管理系统,但基本上都是这样实现方式的变体或添加了不同权限限制维度。

在这个文章中,我们将介绍主流权限系统Apache Shiro及Spring Security的实现方式,并在第四节详细介绍bg.work系统权限实现细节和他的独到之处。

二、Apache Shiro

Apache Shiro 不仅包含了权限管理(授权部分),也包含授权/加密/回话管理/验证数据基础接入等功能模块,在这里我们主要介绍权限管理功能模块

首先我们看下他的整体结构图:

流程简介:

  1. 业务代码(最上层的各种语言实现)通过登录页面登录系统
  2. 登录成功,Apache shiro根据配置分配给操作一个 subject实例,这个subject实例通过realms加载授权数据(连接授权/内部操作标识)
  3. 操作者访问不同URL,受到subject加载的 授权链接匹配限制
  4. 操作者删除或添加数据,则受到subject加载的内部操作标识限制
  5. 通过这些操作限制组合就能有效管理操作者的行为
  6. 具体实现代码就不在这里COPY了

三、Spring Security

Spring Security 是Spring 官方支持的权限管理功能,基本功能和Apache Shiro并无多少不同,实现的功能:认证,授权,甚至系统防护,首先我进也来一张实现构图

流程简介:

  1. 操作登录系统,初始化Authentication对象,通过UserDetailsService加载对应角色的权限与用户数据填充Authentication的Principal 和grantedAuthorities
  2. 当访问一个需要权限的链接时,把链接需要的权限属性和操作者的Authentication交给AccessDecisionManager决定是否有权访问
  3. 当CREATE或者DELETE一个数据对象时,把本次操作需要的权限属性和操作者的Authentication交给AccessDecisiionManager判断权限
  4. 整个过程和Apache Shiro功能相差无几

四、bg.work 权限管理实现

在简要了解了Apache Shiro 和 Spring Secrity功能后,我们将详细说明bg.work办公框架的实现细节。bg.work的权限系统与本系统的数据与界面实现方式有着紧密的联系,所以在介绍权限系统前,我们要先介绍下数据与界面功能。

1、数据操作:

bg.work在数据层设计了Model ORM,基本结构如下:

//model对应数据库的表,基于model orm 实现,model字段可以动态读取,利用这一原则与权限系统结合,可以动态设置针对model数据控制
@Model("department", "部门")
class Department:ContextModel("corp_department","public") {companion object : RefSingleton<Department> {override lateinit var ref: Department}val id= ModelField(null,"id",FieldType.BIGINT,"标示",primaryKey = FieldPrimaryKey())val name= ModelField(null,"name",FieldType.STRING,"名称")val comment = ModelField(null,"comment",FieldType.TEXT,"注释")
}

2、界面定义

<!--基于model orm 框架,界面元素对应Model属性名称,基于这一原则,我们可以结合权限控制系统实现对界面的灵活控制--><view type="list"><field name="id"/><field name="name" type="static"/><field name="comment" type="static"/>
</view>

对应界面:

3、bg.work权限系统框架结构

说明:

Access Model Rule 控制Model(数据表)

read:是否有权操作、读取字段设置、读取哪个用户数据、限制到什么部门、限制到个人/整个组织、限制到目标角色、附加条件等

delete:是否有权操作、删除哪个用户数据、限制到什么部门、限制到个人/整个组织、限制到目标角色、附加条件等

edit:是否有权操作、更新字段设置、更新哪个用户数据、限制到什么部门、限制到个人/整个组织、限制到目标角色、附加条件等

create:是否有权操作、添加字段设置

设置界面:

Model UI Rule 对Model View 的限制

针对 model view 要展示的字段及操作按钮限制,每种 model都有对应的View Type

设置界面如下:

App menu控制,也是针对管理系统的菜单进行控制:

五、总结

bg.work权限系统的加入,对后续功能的加入实现了直接控制,同时也实现了加入功能时不再考虑权限问题,所有的权限设置都推迟到系统部署或定制阶段

附加:

bg.work 源码连接:鼓励请点赞

github:https://github.com/ouliuying/bgserver

gitee:https://gitee.com/ouliuying/bgserver

OA/CRM/ERP 权限管理系统设计 - bg.work办公开源实现相关推荐

  1. 基于面向对象的权限管理系统设计与实现[1]

    基于面向对象的权限管理系统设计与实现[1] 2007-9-20 作者:王如龙 网友评论 0 条 点击进入论坛 摘要:针对大型计算机应用系统对权限管理的要求,提出了采用面向对象技术,实现权限管理的思想, ...

  2. 权限管理系统设计——入门(一)

    权限管理系统设计--入门(一) 后续更新中- 概念 1.身份认证:用户是否是合法. 2.限制资源访问:根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源. 3.用途广:出现在 ...

  3. 企业办公oa系统、医药OA办公后台管理、会议管理、用户管理、物料管理、活动管理、日常拜访、Axure医药内部管理平台、web端后台管理系统原型、医药OA系统、权限管理、Axure原型、rp原型

    企业办公oa系统.医药OA办公后台管理.会议管理.用户管理.物料管理.活动管理.Axure医药内部管理平台.web端后台管理系统原型.医药OA系统.权限管理 Axure原型演示及下载地址:https: ...

  4. 协同OA管理系统的权限管理有哪些?

    协同OA管理系统是服务组织的系统,而任何组织一定会涉及到权限:所以OA系统最最关键的核心就是权限控制.OA系统中的权限管理要实现的效果是对"什么时间.什么地点.谁可以访问什么内容.可以进行哪 ...

  5. 权限管理系统设计_多校区的教育培训机构,如何选择培训学校crm管理系统?

    前几天,一个做外语培训学校的朋友找到我,一脸愁云.原来,他们现在的学校crm管理系统是XX,前些年购买的,当时他们一个校区,近几年他们业务发展的很快,目前,光在武汉就已经有3家校区了,今年还准备在外地 ...

  6. oa crm erp

    OA是什么呢? OA是Office Automation(办公自动化)的简称,本来OA涵盖的范围非常广泛,基本上所有和办公相关的系统都可以称作是OA,但现在大都数公司都把OA系统定义为企业内部的协作沟 ...

  7. linuxoracle查看用户权限_权限管理系统设计过程

    今天和大家一起探讨权限管理方面的设计心得.权限管理,是B端后台系统一个重要的组成部分,属于底层的支撑功能,系统内所有的功能,甚至字段的增减都涉及到权限的分配和管理.因此怎样配置后台的权限系统,以适应多 ...

  8. ERP订单管理的操作与设计--开源软件诞生19

    赤龙ERP订单模块讲解--第19篇 用日志记录"开源软件"的诞生 [点亮星标]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redragon/r ...

  9. Oracle ERP权限管理

    一.权限分类:      功能权限和组织权限. 二.组织结构:      Oralce ERP的组织结构的定义在HR模块完成(没有装HR的话,也可以在库存模块设定).      共分为如下几个层级: ...

最新文章

  1. Java 8 (8) 默认方法
  2. 腾讯2013暑期实习笔试面试总结
  3. visual studio 重命名项目和程序集名称
  4. erlang虚拟机精要(2)-异步信号时间功能
  5. Xshell的一些实用技巧
  6. IOS 应用中从竖屏模式强制转换为横屏模式
  7. 软件工程——认识方法、模型、工具和技术
  8. 小程序开发入门基础篇-张代浩-专题视频课程
  9. 存储系统的三种分类及KV模型
  10. 看动图,读懂光纤通信背后的原理!
  11. 设计模式(二) 工厂方法模式
  12. 自动感应手部消毒机详细制作方案
  13. word表格分开快捷键_在Word2010表格的编辑中,快速的拆分表格应按()快捷键。
  14. 佳能MP4视频恢复方法
  15. 高等数学笔记-乐经良老师-第九章-重积分
  16. 智能手机怎么玩java游戏_智能手机可以在普通手机上玩Java游戏吗?
  17. 数据屏蔽:静态与动态
  18. SUST 20/3/27 题解
  19. 关于意志力,不得不说的十二件事
  20. 2013新东方考研英语视频课程(33G)【全程无加密】

热门文章

  1. 苹果手机备份有必要吗_旧手机里的便签能备份到新手机里吗?
  2. 跟我学c++初级篇——别名的使用
  3. FBX 解析 材质与贴图
  4. 穷苦人民如何用移动固态配置unbutu22.04
  5. abaqus钢结构螺栓连接分析
  6. 如何对接好线上支付?
  7. Excel表格生成sql数据
  8. python列表两两相减_【数据分析入门】之:如何用Python代替Excel(1)
  9. Vue中的视频播放插件( vue-video-player )
  10. 09-mumu模拟器调键盘,回车键