通用权限设计的探讨

  •   最近,在做一个文件管理的东东,拟用asp.net开发,b/s架构。前台展示没什么问题,主要是权限这一块比较复杂,查了不少资料,总体感觉有些欠缺,不能完美的满足需要。        

  本人是一个对code有着特殊爱好的人,本来是一个很小的系统,但为了做的完美,现扩展性的做一番探讨,现将自己对于权限控制方面的一些想法记下,希望大家一起学习、提高。

一、基本情况

       1、公司有十几个部门,文件有许多分类,每个部门需要在各个分类提交文件,进行管理。

       2、根据文件的适用范围,一部分文件的审核需公司部门审核,另一些只需要部门自已审核就OK了。

       3、对于发布文件的查看权限需进行相应的控制,就是要指定哪些部门只能查看哪些文件。

       4、为减轻工作负担,每个部门可能有多人在维护信息。

       基本的情况就这些了,简单明了,可是做起来就不那了容易了。既然是想设计一个通用的权限控制系统,就扩展一下,将文件发布的审批、修改流程设计成工作流程,也即可以自定义,并可完整地的记录各种修订信息。

       基于这种思考设计的权限控制,能算得上是通用的权限系统吗?

二、系统架构

      1、基本要素:

    • 资源(Resource):用户操作产生产出(信息)的根本性、源头性条件,比如文件的分类,或是一个流程模板。
    • 产出(Product):用户在资源上操作产生的信息,比如用户提交的文件。
    • 用户(User):使用系统的人,参观用户、操作用户等。
    • 角色(Role):一组职责(权限)的集合,比如文件的审核者。
    • 位置(Position):现实中的组织机构或岗位。
    • 权力(Power):使用资源的权限。
    • 职责(Responsibility):对产出进行加工的权限。

                初步设想划分为7个基本要素,好象比较晦涩难懂。呵呵,我也不知道对不对,逐步解析吧,不怕反复,只希望到最后能得到想要的东西。

 2、基本原则:

    • 系统权限的控制分为资源权限和产出权限,互不干绕,分开控制。
    • 位置在系统中是用户的集合,每个位置可能有多个用户,一个用户也可能属于多个位置。
    • 位置以树状结构组织,符合现实中的组织机构设置。
    • 角色是职责的集合,适用于对产出的控制。
    • 用户通过角色对产出进行操作,而不是通过位置。
    • 下层位置的所有产出其上层位置均可见。
    • 资源分配可到位置,再由位置分配到用户。

     暂时就这些吧,可能会修改,也许会增加。

 3、控制解析:

    • 用户查看面向发布的信息(文件)(完整的,不是处于处理中的,也即不使用流程控制的,前台的):
      • 只需控制到分类(资源):用户登陆后,系统根据用户的识别号取用户的位置,根据用户的位置得到用户对资源(分类)的权力,从而决定用户是否对某一资源上的产出有权查看。
      • 需要控制到单个文件(信息):首先使用上一条验证,然后根据文件附带的查看权限信息来控制查看。此信息指定到位置,不到用户,因为是面向发布的信息。
    • 用户后台管理信息(后台操作):
      • 取得自己可操作的产出(信息或文件):用户登陆后,根据用户的识别号得到用户的位置,根据位置取得此位置及所有子位置的用户,根据这些用户取得所有的产出(信息或文件)。取出的产出包括可操作的和不可操作的。
阅读更多
个人分类: 权限设计
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭