也谈谈权限管理:理想状态下的权限管理模型

      学计算机基本工作原理时,开始时以一个简化的计算机模型进行讲解,假如从实战角度出发,该模型机几乎无所作为,但有利于学习到事物的本质,在了解了本质之后,再从实际需求出发,一步步在模型机的基础上添砖加瓦,形成一个实战型的权限管理模块。

权限管理本质的思考:它要管住什么?
       权限管理的本质就是管住用户对数据集的访问权力,再往下细化就是数据(二维表格)的行、列访问控制。
 


      注释,无论是多维数据,还是多张数据库表,都可以通过转换,最终得于一张二维的数据表格。

 

与数据库基本操作相结合的思考
       任何业务功能,最终都转换成数据库的基本操作。数据库基本操作有:添加,删除,更新,查看,与上图二维表格数据控制相结合,进行权限控制的想法如下:

添加:
      有没有对该数据集进行添加的权限,true or false;例如:张三可以添加采购申请单,表现为对采购申请单这个数据库有添加的权限。

删除:
      行控制下数据表格有删除其中任意行的权限。例如:张三可以删除自已添加,且处于未提交审核的采购申请单,允许删除的数据为:采购申请单 where 提交人=本人 and 状态=未提交审核

更新:
      行、列控制下数据表格中任意字段的权限。例如:张三可以更改采购申请单中采购货品数量,该采购申请单必须是张三自己添加,且处于未提交审核状态。更新的数据,
行:采购申请单 where 提交人=本人 and 状态=未提交审核
列:采购货品的数量列,(其中初步采购货品单价系统要根据上次采购数据进行填写,采购部有更新权限,但张三未有权限,所以不能进行更新操作)

查看:
      行、列控制下数据表格中的数据,例如:采购部进行网络招标,供应商登录到系统中可以查看到他所参加竞标的物品信息
 行:采购物品 where 物品 in (该供应商所参加竞标的物品)
 列:招标物品信息  除了物品价格标底。

理想状态下的权限管理模型
       与业务系统相关联,现在业务系统在程序上由数据访问层、业务逻辑层、表现层组成。
数据访问层负责对数据库进行访问,只要在数据访问层之后加入权限管理,对数据做行、列过滤,即可完成权限的控制,该理想模型如下:

       
      备注:在程序里,通过ORM将数据库的表格映射成程序中的实体,但一个实体也可以看成表格中的一行,多个实体则构成多行,因此可以当成一个表格看待;一个实体里面存在着子集,那就将子集再看成一个表格,进行数据的控制。多个表格无非多次分别对单个表格进行控制。

 

理想模型下权限控制的描述
       在理想状态下,权限的控制近乎完美,程序员只管进业务逻辑进行编程,美工只管编界面,最后我只要把权限管理插入到数据访问层中去就可以了,控制住了数据也就控制住了权限,以下是理想状态下用户权限控制的场影。

1. 用户添加数据,到了数据该问层,权限管理模块根据有没有权限,进行插入或者丢弃。

2.用户删除数据,当显示用户可以删除的数据时,数据访问层(过滤后)只返回用户可以删除的数据,用户进行删除操作时,权限管理模块检测这些数据是否在可允许删除的范围内,在则删除,否则丢弃。

3.更新数据,大部分的业务逻辑其实就是在更新数据,在理想模型下这实在是太好统一解决了,返回的数据全是你有权限进行操作的数据,操作完了之后存回数据库时,将有权力进行更新的数据进行更新,其它丢弃。试想一下,别说最终用户,就连业务编程的程序员在源数据被控制了的情况下,也无法越权操作。

4.查看数据,在一个界面上面尽管做了各种信息字段、属性的显示,但由于数据返回时做了过滤,没有的数据,界面上只能显示空白。
 

 
      从以上的理想模型来看,权限管理其实真的是很简单,但当与实际结合起来时,该模型只能拿来看看,但它有利于理解权限管理,实际中再复杂的情况都是在这个简单的理想模型一步步添砖加瓦完善起来的。

 

posted on 2009-10-16 23:43  小山982  阅读(2373)  评论(4编辑  收藏  举报