通用的系统权限模型的设计

通用的系统权限模型的设计

一个系统的开发往往分成若干个模块,有些模块跟业务相关,但是也有部分模块是可复用的基础模块,比如权限管理模块,一次做好,多次可以复用。本文将介绍博主对权限管理模块的一些总结。

基于角色的访问控制(RBAC)

常见的权限控制方式是基于角色的访问控制(RBAC)。

其基本思想是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合。

每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。

这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理,减少系统的开销。

“用户-角色-权限”的授权模型

RBAC简单地理解就是通过角色将用户和权限关联起来,一个用户拥有多个角色,一个角色拥有多个权限,构成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间、角色与权限之间,通常都是多对多的关系。如下图所示。

“用户-角色-权限”的授权模型
其中角色是若干个权限的集合,比如说一个人力系统,有经理、员工、组长等不同角色,每个角色的权限不一定是一样的,如果用户A是经理,需要对员工的绩效做评价,但评绩效包括打分、做评价、查看员工信息等多个权限,一个个授权非常繁琐,这个时候只需要这些权限一次性授予经理这个角色,然后把经理的角色给用户A即可。

有用户组的模型

上面把若干权限集合于角色授权给用户,可以解决当一个人的权限过于多的时候繁琐的添加权限,但是如果当同一个权限需要的用户比较多的情况下,也存在这一问题。这个时候我们可以通过增加一个用户组,每个用户组内有若干个用户,我们只需要将需要相同权限的用户分到同一个用户组,然后把拥有权限的角色分给用户组即可,同理,我们对一些在大多数情况下会同时拥有的角色也来个角色组,像管理员,既有管理员角色的权限,也有普通用户的权限。如下图所示。

用户组和角色组
新增一个用户组的表,将其与用户表和权限表关联起来,这样一来,通过一次授权就可以给多个用户授予相同的权限,这个时候用户的权限就是用户个人的权限和所在用户组的权限之和。

“用户-角色-权限-资源”的授权模型

权限的体现通常包括:

  • 菜单的显示和访问,比如不同角色用户登录展示的菜单不一样;
  • 页面元素的显示和操作,比如一个页面是两个角色通用,但是其中一个角色不能增删改,只允许查看,那么对这类角色就要单独做限制,不显示或者不能操作对应按钮;
  • 文件的管理,很多系统都有通过操作文件实现业务的批量操作,不同的角色对同一类文件的操作也不一样,有些可以修改,有些只可以下载。

因此,我们可以将权限再做细分,把菜单、页面元素和文件等拎出来,作为资源管理起来,而权限里面就是对各类资源的具体操作,构成“用户-角色-权限-资源”的授权模型。如下图所示。

“用户-角色-权限-资源”的授权模型

每一个资源与权限对应起来,这样增加模型的维护性,当我们的系统有新的资源类型需要权限控制时,我们只需要新增对应的资源表和与权限的关联表即可。

各个资源表与权限的关联表和权限表是一对一的关系,即每添加一条资源,就要同时往三个表添加数据。

最终完整的表模型如下所示。

权限模型

写在最后

以上只是一个基础的权限模型,但应该也可以满足一些小型系统,更完整一点可以还应该增加操作日志表、session、ip和mac记录等,同时还可以根据系统的对应业务增加相应的内容,但这些都是细枝末节,需要的时候加上都行。

权限模型建表SQL获取

关注下方公众号,回复“权限模型”,即可获取建表SQL。该公众号将不定期分享一些小demo、小项目以及学习心得

秀宇笔记

往期文章:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了设计一个SAP通用会计凭证生成平台,以下是一些关键的步骤和考虑因素: 1. 确定用户需求:首先,需要明确用户的需求,包括哪些业务场景需要支持、会计科目、会计期间、凭证头和凭证行信息等。可以通过与用户沟通或者调研来获取这些信息。 2. 设计数据模型:在明确用户需求后,需要设计一个数据模型来存储凭证相关的信息。这个数据模型应该包括凭证头和凭证行信息,以及与会计科目、会计期间等相关的信息。 3. 开发API:开发API,使得用户可以通过接口将数据传递给平台。考虑使用RESTful API或GraphQL API来支持数据传输。 4. 开发凭证生成逻辑:设计凭证生成逻辑,包括如何自动填充凭证头和凭证行信息,如何根据会计科目和会计期间确定凭证金额等。 5. 集成SAP:考虑集成SAP系统,使得凭证可以直接传递到SAP中进行记账。可以通过RFC或IDoc等方式进行集成。 6. 用户界面:设计一个用户友好的界面,使得用户可以直观地进行数据录入和操作。 7. 安全性和权限控制:考虑数据的安全性和权限控制问题,包括用户身份验证、数据加密和访问权限等方面。 8. 测试和部署:在完成开发后,需要进行测试和部署,确保系统的稳定性和可靠性。 以上就是设计一个SAP通用会计凭证生成平台的关键步骤和考虑因素。在实际开发中,还需要根据具体情况进行适当的调整和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值