`
dylan0514sina.cn
  • 浏览: 94933 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

细粒度的权限控制

    博客分类:
  • any
 
阅读更多
根据系统需求,我们从几个维度对角色分类:第一个维度是在用户的角色维护上,直接对用户进行角色分配,或当用户和项目发生调动关系时,动态的维护用户的角色;第二个维度是是否属于公司职位,或系统维护类;第三个维度是是否可以直接调剂到项目开发中的研发类角色。对于权限,从抽象到具体划分为菜单->制度->(区域->按钮),我们在权限管理中可以为角色配置菜单,区域或按钮;在制度管理中,创建制度时可以指定查看的角色;在web页面中可以通过IMS标签控制区域或按钮。

角色分类
静态角色分类
职位类
管理类职位
研发类职位
系统类
系统管理员
日志管理员
动态角色分类
项目经理
项目组成员
权限划分
菜单
制度
区域或按钮
权限编码
    对权限的编码主要涉及菜单,区域或按钮的编码,这种编码明显带有上下级关系;制度权限编码依赖于制度详细信息中的主键,不具有上下级关系。目前采用Excel文件作为数据字典方便菜单和按钮与角色分配管理。当文件改变之后,可以运行初始化菜单程序以更新菜单。初始化时机由系统自定义,可以使用调度框架或Spring容器生命周期,目前嵌入到Spring生命周期中。菜单初始化算法如下:

假设有集合:menuNames存放菜单名,tops存放顶级菜单名;Map:weights存放菜单名与对应的菜单编号,临时变量base

前置条件:1.菜单不能重名 2.顶级菜单项不能大于(1-9)9, 同级子菜单项不能大(0-9)10。

后置条件:weights集合存放了所有的菜单和编号

    从”menu” Sheet第二行从左到右扫描

          对于最左项,如果menuNames中不存在,则将菜单名放入tops,并将菜单名和Top数量放入weights;记录top数量到base

         如果存在,从weight中根据菜单名得到编号并放入到base

         向右扫描,迭代每一项

                            如果项值为空,退出

                            weights中放入菜单名,菜单编号为10 * base + 菜单在excel中列编号;menuNames中放入菜单名

     通过上述算法的描述,可以了解到菜单的编码,如果编号为1 的菜单为“我的工作台”,12是“项目管理”,则“我的工作台”和“项目管理”具有上下级关系,而且“项目管理”是“我的工作台”的第三个儿子。通过这种数据结构容易制定菜单。至于按钮的编码或角色分配如之类似。

1.rolesKey

用户、角色、权限之间表现为多对多关系,我们为用户,权限设计一个rolesKey属性,它是long类型的位向量,每一位表示以为角色,位与角色主键相关,这样可最多表示64个角色,目前系统存在40个角色,rolesKey可胜任,rolesKey好处在于位运算效率高,基于位向量的代码比较紧凑,而且扩展性强。一般在角色实体中定义常用的角色变量和方法就可满足大多数需求。我们在hibernate为用户和权限设置角色的时候,计算rolesKey。这个过程对开发人员透明。

2.权限控制标签

ims标签是基于角色的权限控制标签,它提供三个属性

sessionFactoryBeanName 可选,自定义权限Tag中查询角色等表需要的

roles 可选,以”,”分隔的角色id列表,指定哪些角色可以访问该标签

accessKey 必选,区域或按钮权限编号

目前提供<ims:button accessKey=”3012”/> <ims:div accessKey=”3013”></ims:div>(freemarker定制)
分享到:
评论

相关推荐

    基于RBAC模型的细粒度权限控制

    总之,基于RBAC的细粒度权限控制提供了一种有效且灵活的方式来管理Web应用的访问权限。它通过角色将用户和权限关联,减少了管理开销,增强了系统的安全性和适应性。随着企业需求的不断变化,RBAC模型已成为现代权限...

    支持细粒度权限控制且可搜索的 PHR云服务系统.pdf

    【支持细粒度权限控制且可搜索的PHR云服务系统】 个人健康记录(Personal Health Record,PHR)云服务系统是一种将用户的医疗健康信息存储于云端,方便用户随时随地访问和管理的重要应用。该系统的核心特性是实现了...

    java的细粒度权限和shiro权限校验 ssh

    9. **安全最佳实践**:为了提高系统的安全性,除了细粒度权限控制外,还需要注意其他安全措施,如输入验证、密码加密存储、防止SQL注入和XSS攻击等。 通过上述步骤,我们可以在SSH框架中充分利用Shiro实现细粒度的...

    权限控制之粗粒度与细粒度概念及实现简单介绍

    权限控制可以分为两种类型:粗粒度权限控制和细粒度权限控制。 粗粒度权限控制是指对资源类型的权限管理。资源类型可以是菜单、URL连接、用户添加页面、用户信息、类方法、页面中按钮等。粗粒度权限管理的示例可以...

    AppBoxPro细粒度通用权限管理框架源码

    7. **细粒度权限控制**:AppBoxPro强调细粒度权限管理,意味着不仅控制到用户和角色级别,还可以深入到具体的功能和数据记录层面,确保了权限分配的灵活性和安全性。 8. **源码分析**:拥有AppBoxPro的源码,开发者...

    权限管理服务平台, 利用shiro权限管理设计思想, 支持单用户多角色,比RBAC的资源管理更细粒度-grbac.zip

    通过学习和使用这个grbac平台,开发者不仅可以了解如何利用Apache Shiro实现权限管理,还能掌握如何设计和实现一个具有细粒度权限控制的系统,这对于构建安全的企业级应用非常有价值。同时,这也是一种对传统RBAC...

    axx2oauth:OAuth2服务器实现了资源所有者密码凭证流,包括细粒度权限控制和DSA令牌验证

    OAuth2服务器实现了资源所有者密码凭证流,包括细粒度权限控制和DSA令牌验证。 先决条件 Java 8 Maven的3 建造 该服务器是一个SpringBoot应用程序。 下载后,您可以通过以下命令行在axx2oauth根文件夹中构建应用...

    电力物联网场景下基于零信任的分布式数据库细粒度访问控制.zip

    而“细粒度访问控制”则是指在数据库层面实现更精确的权限管理,可以针对每个字段甚至每个数据行设置访问规则,确保只有具备特定权限的用户或服务才能查看或修改特定数据。 结合电力物联网和零信任理念,分布式...

    电力物联网场景下基于零信任的分布式数据库细粒度访问控制.pdf

    在这样的环境下,基于零信任模型的分布式数据库细粒度访问控制成为了保障电力物联网安全的关键技术。 零信任安全模型提出的“永不信任,始终验证”的核心原则,从根本上改变了传统的安全防护理念。该模型不依赖于...

    大数据环境下细粒度的访问控制与审计管理.pdf

    在大数据环境中,细粒度的访问控制意味着对数据进行更深入、更具体的权限划分,确保只有授权的用户或进程才能访问特定的数据片段。这种控制方式可以防止未授权的访问,降低数据泄露的风险,并提高数据保护的水平。 ...

    细粒度位置追踪

    CP-ABE技术允许用户根据自己的权限访问加密数据,实现细粒度的访问控制。同时,通过转换键和代理重加密技术,大部分计算任务被转移到云服务器,减轻了移动设备的计算负担,减少了资源消耗。这意味着移动设备用户可以...

    基于Spring Boot和Shiro框架的权限管理系统.zip

    开发人员适用于需要实现细粒度权限控制的Java后端开发人员。 前端开发人员适用于需要与后端进行权限交互的前端开发人员。 系统管理员适用于需要管理系统用户、角色和权限的管理员。 使用场景及目标 使用场景...

    Android平台细粒度权限管理系统的研究与实现.pdf

    与粗粒度权限管理相比,细粒度权限管理提供了更加灵活和细致的权限控制方式。这意味着系统可以对应用请求的权限进行更细粒度的管理和分析,从而让用户在授权时可以选择性地赋予应用权限,而不是全有或全无的方式。...

    基于位运算的权限细粒度控制

    在IT行业中,权限控制是系统安全的关键组成部分,尤其在企业级应用中,对用户权限的精细化管理至关重要。本文将深入探讨“基于位运算的权限细粒度控制”这一主题,结合给定的标签“源码”和“工具”,我们将探讨如何...

    MF00926-SSM权限控制管理系统源码.zip

    ssm+shiro+layui+quartz实现细粒度权限控制,支持调度,支持日志监控,支持缓存,支持多数据源 运行环境: jdk8+tomcat8.0.53+mysql8.0.16.0+IntelliJ IDEA+maven+redis 项目技术: spring+spring mvc+mybatis+...

    Android平台下细粒度权限管理机制设计与实现.pdf

    总之,Android平台下的细粒度权限管理机制是应对日益复杂的安全挑战的重要手段,它通过增强用户对权限控制的感知和参与,提升了整个系统的安全性。未来,随着技术的发展,我们期待看到更多创新的权限管理策略,以更...

Global site tag (gtag.js) - Google Analytics