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

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

通用权限设计方案

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

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

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

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

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

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

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

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

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

    • 配置模块

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

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

    • 拦截模块

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

    • 权限初始化

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

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

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

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

    你可能感兴趣的文章
    mapping文件目录生成修改
    查看>>
    MapReduce程序依赖的jar包
    查看>>
    mariadb multi-source replication(mariadb多主复制)
    查看>>
    MariaDB的简单使用
    查看>>
    MaterialForm对tab页进行隐藏
    查看>>
    Member var and Static var.
    查看>>
    memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
    查看>>
    memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
    查看>>
    Memcached:Node.js 高性能缓存解决方案
    查看>>
    memcache、redis原理对比
    查看>>
    memset初始化高维数组为-1/0
    查看>>
    Metasploit CGI网关接口渗透测试实战
    查看>>
    Metasploit Web服务器渗透测试实战
    查看>>
    MFC模态对话框和非模态对话框
    查看>>
    Moment.js常见用法总结
    查看>>
    MongoDB出现Error parsing command line: unrecognised option ‘--fork‘ 的解决方法
    查看>>
    mxGraph改变图形大小重置overlay位置
    查看>>
    MongoDB可视化客户端管理工具之NoSQLbooster4mongo
    查看>>
    Mongodb学习总结(1)——常用NoSql数据库比较
    查看>>
    MongoDB学习笔记(8)--索引及优化索引
    查看>>