zoukankan      html  css  js  c++  java
  • 权限管理——权限模型和权限控制

    等我接收权限的时候,权限模型和表已经定好了的,我也只是带领大家开发功能。不过还是要啰嗦一下权限模型的初始化和进化状态。

    权限模型

              上篇博客也说过资源是通过权限或者是许可来控制的。所以如下图:

    主体(账号、密码)

    资源(资源名称、访问地址)

    权限(权限名称、资源id

    角色(角色名称)

    角色和权限关系(角色id、权限id

    主体和角色关系(主体id、角色id

                   

    进化模型:

               通常企业开发是把资源和权限表合为一张权限表的。

    资源(资源名称、访问地址)

    权限(权限名称、资源id

    合并为:

    权限(权限名称、资源名称、资源访问地址)

                     

                   此进化模型被称为权限管理的通用模型,甚至还有些会对通用模型进行修改。

    权限控制

                 用户需要分配相应的权限才可以访问相应的资源,通常给用户分配资源权限需要将权限信息持久化,比如存储在关系数据库中。分配权限就引出了权限控制。有两种权限控制方式。

     

    基于角色的访问控制

               基于角色的访问控制,又叫RBACrole based access control),比如系统中角色包括:学生、教师、教学秘书、管理员等(角色针对用户来划分)。

    系统中代码实现:

    [java] 
     
    1. //判断用户属于哪个角色  
    2. If(user.role=="教学秘书"){  
    3.     //系统资源  
    4.     //分配资源  
    5. }  

    问题:角色是针对人划分的,如果该角色可以访问的资源出现变更,那就需要修改代码,比如角色名称修改,或者角色可用的资源权限修改,那代码就需要修改,这样是非常不人性化的,也破坏了代码的完整性,扩展性不强,不利于系统维护。

    基于资源的访问控制

                基于资源的访问控制,也简称为RBACResourcebased access control),资源在系统中是不变的,比如ITOO中资源有各个子系统、各个系统的模块、各个模块下的页面、按钮等。

    [java] 
     
    1. if(user.hasPermission ('分配资源(权限标识符)')){  
    2.     //系统资源内容  
    3.     //分配资源  
    4. }  

               这个方法就可以解决用户角色变更不用再修改代码的问题了,如果资源变更,那只需要给角色对应的资源变更就可以了。所以建议使用基于资源的访问控制实现权限管理。

  • 相关阅读:
    Sum Root to Leaf Numbers
    Sum Root to Leaf Numbers
    Sort Colors
    Partition List
    Binary Tree Inorder Traversal
    Binary Tree Postorder Traversal
    Remove Duplicates from Sorted List II
    Remove Duplicates from Sorted List
    Search a 2D Matrix
    leetcode221
  • 原文地址:https://www.cnblogs.com/weixupeng/p/8569614.html
Copyright © 2011-2022 走看看