最近在研究基于角色的编程,需要这方面的知识,请指教下从哪些方面着手,有比较好的效果,是在.NET环境下的,找了些资料都不太理想,大家给点建议.

解决方案 »

  1.   

    http://www.google.com/search?hl=zh-CN&newwindow=1&q=%EF%BC%B2%EF%BC%A2%EF%BC%A1%EF%BC%A3+%E6%9D%83%E9%99%90+&lr=lang_zh-CN%7Clang_zh-TW
      

  2.   

    一、关于权限涉及的几个概念
    对象访问控制:用一个二元组来表示:(控制对象,访问类型)。其中的控制对象表示系统中一切需要进行访问控制的资源。我们将引入一套完整的资源表示方法来对系统中出现的各类资源进行定义和引用。访问类型是指对于相应的受控对象的访问控制,如:读取、修改、删除等等。
    数据访问控制:如果不对数据访问加以控制,系统的安全性是得不到保证的,容易发生数据泄密事件。所以在权限中必须对对象可访问的数据进行按不同的等级给予加密保护。我们同样用一个二元组来表示:(控制对象,谓词)。
    粗粒度:表示类别级,即仅考虑对象的类别(the type of object),不考虑对象的某个特定实例。比如,用户管理中,创建、删除,对所有的用户都一视同仁,并不区分操作的具体对象实例。细粒度:表示实例级,即需要考虑具体对象的实例(the instance of object),当然,细粒度是在考虑粗粒度的对象类别之后才再考虑特定实例。比如,合同管理中,列表、删除,需要区分该合同实例是否为当前用户所创建。 二、关于权限 一个通用的权限设计仅解决了Who+What+How 的问题,其他的权限问题留给业务逻辑解决。(也就是说系统只提供粗粒度的权限,细粒度权限被认为业务逻辑的职责)概念:Who:权限的拥用者或主体(Principal、User、Group、Role、Actor等等)What:权限针对的对象或资源(Resource、Class)。How:具体的权限(Privilege, 正向授权与负向授权)。Role:是角色,拥有一定数量的权限。Operator:操作。表明对What的How 操作。说明:User:与 Role 相关,用户仅仅是纯粹的用户,权限是被分离出去了的。User是不能与 Privilege 直接相关的,User 要拥有对某种资源的权限,必须通过Role去关联。解决 Who 的问题。Resource:就是系统的资源,比如部门新闻,文档等各种可以被提供给用户访问的对象。资源可以反向包含自身,即树状结构,每一个资源节点可以与若干指定权限类别相关可定义是否将其权限应用于子节点。Privilege:是Resource Related的权限。就是指这个权限是绑定在特定的资源实例上的(Privilege Instance)。Role:是粗粒度和细粒度(业务逻辑)的接口,一个基于粗粒度控制的权限框架软件,对外的接口应该是Role,具体业务实现可以直接继承或拓展丰富Role的内容,Role不是如同User或Group的具体实体,它是接口概念,抽象的通称。Group:用户组,权限分配的单位与载体。权限不考虑分配给特定的用户。组可以包括组(以实现权限的继承)。组可以包含用户,组内用户继承组的权限。User与Group是多对多的关系。即一个User可以属于多个Group之中,一个Group可以包括多个User。Group与Operator是多对多的关系。Operator的定义包括了Resource Type和Method概念。即,What和How的概念。之所以将What和How绑定在一起作为一个Operator概念而不是分开建模再建立关联,这是因为很多的How对于某What才有意义。比如,发布操作对新闻对象才有意义,对用户对象则没有意义。