博客
关于我
通用权限解决方案介绍
阅读量:787 次
发布时间:2019-03-24

本文共 1118 字,大约阅读时间需要 3 分钟。

通用权限设计方案

在现有的权限框架如Shiro和Spring Security中,虽然方便快捷,但在定制化方面往往显得不够支持各个业务独特需求。对于不同的业务,权限管理方式各有不同,在这种情况下,自定义的通用权限设计显得尤为重要。

权限拦截的主要对象包括菜单(控制台左侧的菜单)、路由、接口以及按钮等。这些点需要在用户操作时进行权限控制。权限的作用是控制用户对系统资源的访问,主要操作包括配置、读取和拦截三个层面的权限管理。

在设计权限管理时,通常会考虑三种核心概念:用户、角色和资源。基于这三个核心概念,可以进行灵活的权限管理。具体来说,可以采用以下设计思路:

  • 简单模型:100用户 × 100资源

    这种简单的用户-资源关联方式适用于小型项目,通过直接关联用户和资源,可以快速实现权限管理。每个用户可以被赋予对特定资源的访问权限。

  • 经典模型:用户-角色-资源

    这种模型分为两层关联:用户与角色以及角色与资源。用户可以通过角色来继承权限,具体操作如下:

    • 2个角色 + 100资源
    • 用户与角色之间的关系
    • 角色的访问权可以被灵活分配
  • 这样一来,用户之间的权限可以通过角色进行集中管理,而不需要每个用户都硬编码权限,实现了灵活性和可扩展性。

    功能上,我们需要实现以下几个模块:

    • 配置模块

      • 用户管理:用户表和用户管理界面
      • 资源配置:资源表和资源配置界面
      • 角色管理:角色表和角色管理界面
      • 用户角色关联配置:通过用户角色关联表,实现用户权限的分配
      • 角色资源关联配置:通过角色资源关联表,实现资源权限的分配
    • 读取模块

      用户权限的读取可以在登录时完成。具体来说,用户登录时,通过用户角色关联表,获取当前用户的角色信息。再通过角色资源关联表,可以查询到该用户可以访问的所有资源。

    • 拦截模块

    在用户操作资源时,需要进行权限拦截。从前端来看,这涉及菜单、路由、按钮等用户界面元素的控制;后端则需要对接口进行保护,如通过Gateway的过滤器进行拦截。这种双重层面的控制可以确保系统安全,也避免了前端界面与实际接口存在的不一致问题。

    • 权限初始化

      系统上线时,需要初始化数据库中的五张表数据。这些表包括:用户表、角色表、资源表、用户角色关联表和角色资源关连表。初始时,系统会有一个默认用户账号(管理员账号),其拥有管理角色,能够管理所有资源和配置必要的权限。

    关于前端双重拦截的问题,如果仅靠前端对接口进行隐街控制,可能会存在被逆向工程、代码修改等安全隐患。因此,在后端也进行接口拦截,能够有效提升系统安全性。

    通过这样的设计,可以实现对用户的精细化权限管理。这种设计方法既支持定制化,又保持了灵活性,能够适配不同业务的需求。这是实现整体系统安全管理的关键所在。

    转载地址:http://eprkk.baihongyu.com/

    你可能感兴趣的文章
    NIFI1.21.0/NIFI1.22.0/NIFI1.24.0/NIFI1.26.0_2024-06-11最新版本安装_采用HTTP方式_搭建集群_实际操作---大数据之Nifi工作笔记0050
    查看>>
    NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_插入时如果目标表中已存在该数据则自动改为更新数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0058
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
    查看>>
    NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
    查看>>
    NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>