zoukankan      html  css  js  c++  java
  • 一种基于主客体模型的权限管理框架

    用户权限体系,在大多数的应用系统中都是需要的。而用户权限体系在不同的应用场景,其适应要求也都有不同。因此,要做一个普适性较好的权限管理系统是非常困难的。  为此,本文提出一种新的权限管理及分配模型,即兼顾通用性,又兼顾应用的个性化。 
    1.基本概念的抽象
    在权限框架中,有用户、角色、组织机构、部门、岗位、菜单、操作、功能等等,甚至组织机构还要分成几个维护,有行政维护、账务维度等等,把这么复杂的模型在一个系统中都实现,会有以下几种情况出现: 
    a.这个太好了,正是我要的(命中概率约为0)
    b.功能还不错,有些设计超出了我的应用范围,但是我有些功能用不上(概率10%)
    c.功能都是我要的,有些设计不足,需要进行一些扩展(概率10%)
    d.功能有一部分不是我要的,有一部分不满足我要的功能(概率80%) 
    这也是目前我们的应用现状。 
    仔细分析上面的一些概念,有且不仅限于上面列出的内容,通过分类,可以划分为两个群体,权限主体和权限客体。
    所谓权限主体,就是可以拥有权限的概念,如:用户、角色、岗位、部门、机构等;所为权限客体,就是可以被用来进行权限控制的概念,如:菜单、功能、操作等。 
    通过抽象权限主体和权限客体,就可以把复杂的权限模型简化成权限主体与权限客体之间的关系。管你有多少种权限主体,不管你有多少权限客体,都在我的圈圈里面,这样适应性自然不是一般的好。 
    2.权限检查的抽象 
    实际应用当中,权限检查的方式,也是有许多种情况的,比如: 
    允许方式 :凡是允许的就可以执行,否则就不可以执行 
    禁止方式:凡是禁止的就不可以执行,否则就可以执行 
    允许优先方式:可以有禁止有允许,但是只要有允许就可以被执行 
    禁止优先方式:可以有禁止有允许,但是只要有禁止就不可以被执行 
    权限主体可继承方式,就是说权限主体被授权表示其下级的内容可以被授权 
    权限客体可继承方式,就是说权限客体被授权的内容,代表其下级也被授权 
    当然,还可以有N种方式,这个熟悉设计模式的同仁一眼就可以看出,这正好可以利用行为模式进行解决。 
    当项目中的技术经理选择哪种授权模式的时候,只要配置或实现相应的策略即可。 
    如此,就可以把权限框架中最复杂的两个部分分离抽象出来,你想要什么样的权限模型,需要什么样的授权策略,都可以充分适应。

  • 相关阅读:
    ejs不能读取js变量??????
    技术架构
    测试框架那些事儿
    如何跨团队带项目?
    自定义网址导航站-聚享导航
    vue+node+mongodb前后端分离博客系统
    聚享导航chrome插件发布
    NuxtJS实战,一个博客系统
    Essay3.0发布,基于JavaScript的前后端同构博客系统
    小程序开发中的一些坑和技巧
  • 原文地址:https://www.cnblogs.com/j2eetop/p/4610482.html
Copyright © 2011-2022 走看看