zoukankan      html  css  js  c++  java
  • RBAC基于角色的权限管理模型

    一、权限管理模型的必要性:

                  a. 安全性:防止误操作,防止数据泄露,保证信息的安全。

                  b. 数据隔离:保持不同的角色具有不同的权限,只能看到自己权限范围内的数据

    二、权限管理模型的发展:

                  a. 传统的权限管理:随着用户数量的增大和用户权限区别的增大,传统的权限管理需要针对每个用户依次管理,成本较高。

                  b. RBAC:Role-Based Access Control 用户-角色-权限,权限与角色相关联,用户与角色相关联,通过对用户赋予相应的角色,再去获取相应的权限,从而实现了用户与权限的解耦,具有很好的扩展性和通用性。

    三、RBAC的三个原则:

                  a. 最小特权原则:即通过对每个角色赋予相应的权限,通过对每个用户赋予相应的角色,从而实现给用户分配相应的权限,保证该权限不超过该用户完成其任务所需要的权限即可。

                  b. 责任分离原则:指的是针对敏感任务,分配两个责任上相互制约的两个角色,比如针对财务管理员和会计。

                  c. 数据抽象原则:主要是通过抽象许可权来实现。比如财务上的信用等抽象许可权。

    四、RBAC的数据库设计

                  a. 用户表

                  b. 角色表

                  c. 权限表

                  d. 用户角色表

                  e. 角色权限表

                 

    五、基于RBAC的实现流程

                  a. 首先针对权限的校验的业务逻辑在一个父类中实现,其余子类均需要实现该父类,从而实现针对用户的权限的控制。

                  b. 用户访问时,首先查询用户表判断用户的状态是否是可用。

                  c. 然后根据用户 id查询 用户角色表,得到用户的角色id

                  d. 根据角色 id 查询 权限角色表,得到该用户在该角色下的权限id

                  e. 根据权限 id 查询 权限表,得到该用户在该角色下的权限。

    六、主流的权限管理框架

                  a. Spring Security

                  b. Apache Shiro

  • 相关阅读:
    策略模式Strategy
    flex项目
    模板方法Template Method
    timer与ScheduledExecutorService
    java两个字符串的相似度
    一个简单的webshell
    状态模式State
    Java性能优化
    责任链模式China of Responsibility
    ns2.34下mflood协议的完美移植
  • 原文地址:https://www.cnblogs.com/Demrystv/p/11317961.html
Copyright © 2011-2022 走看看