美文网首页
设计一个权限系统

设计一个权限系统

作者: NEU_PROYZ | 来源:发表于2021-11-13 11:44 被阅读0次

对于任何一个成熟的系统而言,如何设计权限体系,是我们在项目设计之初就应该考虑的。在笔者看来,一个完善的权限系统可以在保证业务逻辑正确的前提下,尽量保证代码的简洁性和可扩展性。

关系模型

我们需要思考如下几个概念之间的关系:

  1. 用户。
  2. 角色:权限的载体。一个合法用户应该有一个或多个角色。
  3. 资源:系统的模块,需要区分不同权限。
  4. 角色权限:某个角色对某个资源type具有的权限。
  5. 内容权限:某个用户对某个资源id的权限。

除此之外,我们还应考虑用户是否有组的概念,比如:部门。我们可以把不同的组称作域(组或许还有层级关系)或者项目组。此时,角色或者角色权限就需要挂载在组的概念下。

image.png

角色-资源的权限:上图左上角。
重点理解用户-资源id的权限:上图左下角。
在实际设计中,需要根据不同的需求进行简化或者补充。

权限点

权限点如何定义?有权限就是1,没权限就是0?那显然是不够的,举个例子:

eg:对于一个资源列表,对不同角色可以粗略的分为以下权限点:
list(查看),edit(编辑),delete(删除)等。

实现:权限点最好的实现方式枚举类。同时,每个枚举类的数值型标识,采用2的n(n>=0)次幂的方式递增,这样的好处在于,我们可以用位运算来判断权限。
例如:以上3个权限的code分别为:1,2,4。
若此时新增一个管理的权限,那么他的权限可能是上述所有权限的并集:list | edit | delete = 7。
查询一个角色是否有删除权限:operation & delete == delete,其实就是判断对应的位上是否为1。

相关文章

  • 缓存知识

    权限系统是管理类系统中必不可少的一个模块,一个好的缓存设计更是权限系统的重中之重,今天来聊下如何更好设计权限系统的...

  • 数据库 权限设计

    数据库 权限设计 -系统权限管理设计-通用权限管理设计 之 数据库结构设计 权限 用户 角色 组 用户表

  • JavaWeb权限设计原理

    每个系统都有权限设计,本篇主要将初始的权限设计的原理,不依赖任何框架,以直观的角度剖析web的权限设计。 权限设计...

  • 设计一个权限系统

    对于任何一个成熟的系统而言,如何设计权限体系,是我们在项目设计之初就应该考虑的。在笔者看来,一个完善的权限系统可以...

  • 权限系统设计方案

    1权限模型 1.1 权限设计 从业务分类上来讲权限可以分为数据查看权限,数据修改权限等,对应到系统设计中有页面权限...

  • 后台系统:基于RBAC模型的权限设计

    对于业务复杂或数据庞大的系统,为了方便管理,一定要做权限设计。 权限设计是后台系统要考虑的一个授权策略问题。直白的...

  • ssh项目实战----java监听器实现权限控制系统和资源获取优

    一、权限控制系统 权限控制系统即用户登录后,如果操作了不能访问的操作,系统将其拦截。权限控制系统设计需求: 系统功...

  • 权限系统设计

    表结构设计

  • 系统权限设计

    一、客户需求 系统权限包含功能权限,操作权限,数据权限。功能权限比较好理解,有则功能可见,没有则不可见。接口权限也...

  • 权限系统设计

    前言 权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控...

网友评论

      本文标题:设计一个权限系统

      本文链接:https://www.haomeiwen.com/subject/akdgaltx.html