`

通用的权限模型有可能吗?

阅读更多
权限模型设计时,一般是用户可以是多个角色,每个角色分配一组权限,每个用户还可以分配几个额外权限。

在权限分配的页面上,一般还需要将权限按照树状的层次展现出来,如“用户管理"节点下有“创建用户”“删除用户”“修改用户” 几个权限。

然而权限对象本身是特殊的,有时权限针对页面,有时权限针对的是数据的范围。所以我考虑,是否可以把权限描述为一个接口?

class User{
  List<Role> roles;
  List<Permission> additionalPermission;
}

class Role{
  List<Permission> permissions;
}

interface Permission{
  String getName(Locale locale)
  String getDescription(Locale locale)
}

class WebPermission{
  List<Pattern> getAccessibleUrl();
}


目前在Light-Commons 的权限框架中,是使用 IUser.getPermissionKeys() 来获取用户权限key列表,这些key对应配置文件中定义的一些可访问url。但对于其他的权限逻辑无法控制。
如何才能编写一个通用的权限模型呢?

另外,我觉得一个应用所对应的权限大部分是固定的,应该由配置文件读取,而不是由数据库读取。但是有些系统权限也需要是动态的,比如创建了一个部门后,也就创建了这个部门的一些操作权限,可以将这些权限分配给某个人。

另外,权限里面还有一种特殊的类型,比如“操作自己的数据”,“操作自己所在部门的数据”,“操作自己下属的数据”,这些权限不是具体到控制对象的,而是表达一种与控制对象的关联关系。一般来说都是硬编码实现的。可复用很难。

基本上,对于权限的逻辑部分,我认为复用很难,但是整个权限部分整理一个模板,还是有可能的。至少页面层的模板应该是可以的,如创建用户页面,权限分配页面。如:但需要后台的权限相关对象匹配。




分享到:
评论
6 楼 yangyi 2008-09-24  
安全性就参考Java的,包含验证和授权两部分:
验证通过的Subject,可以doPrivileged(XXXSceurity接口实现),只不过Java用policy文件维护,你可以放在数据库里
5 楼 freeman_sh 2008-09-24  
通用的权限管理有很多现成的产品的吧,比如IBM的AM,CA的website等等,可以拿来参考下他们的设计思想的吧。
4 楼 Joo 2008-08-28  
麻烦楼上具体说说,可以看看这里比较有针对性
http://www.iteye.com/topic/231845
3 楼 longlongriver 2008-08-26  
权限一般分两种,系统权限和业务权限:
系统权限一般指对系统资源的操作,板块页面按钮、可见不可见,链接等等,这部分可以做成可配置的,可复用性一般都比较高。
业务权限基本上和实际情况挂钩,很多情况体现为对表的行集权限,这部分一般很难做到通用设置。
所以,做通用权限管理的话,只要能够实现系统权限基本上就可以了
2 楼 laiseeme 2008-08-26  
acegi  研究研究这个
1 楼 jianfeng008cn 2008-08-26  
spring security 不就是通用的吗

相关推荐

    一个通用的权限管理模型的设计方案

    通过上述对通用权限管理模型的深入分析,我们可以看出,一个良好的权限管理模型需要综合考虑用户、角色、权限、资源等多个维度的管理,以及这些维度之间的逻辑关系。此外,随着业务的发展和需求的变化,权限管理模型...

    基于RBAC模型的通用权限管理系统的设计(数据模型)

    基于RBAC模型的通用权限管理系统的设计(数据模型) 本文讨论了基于RBAC模型的通用权限管理系统的设计,主要阐述了RBAC模型的基本概念、RBAC模型的四个组件模型、核心对象模型设计和权限管理系统的设计思想。 ...

    通用权限管理系统

    对于开发者而言,深入研究这部分源码有助于理解系统的具体实现,包括如何定义权限模型、如何进行权限校验、以及如何设计高效的权限分配机制等。源码分析可以帮助我们学习到最佳实践,提升自身开发能力。 综上所述,...

    PowerBI零售行业通用业务模型

    在数据分析和商业智能领域,Power BI 是一个强大的工具,尤其在零售行业中,它能帮助企业...记得阅读提供的“PowerBI零售行业通用业务模型.txt”文件,其中可能包含了详细的步骤和案例,助你深入理解和掌握这些知识。

    通用权限系统数据库

    通用权限系统数据库是一种精心设计的架构,用于管理用户访问控制和数据安全性,广泛应用于各种规模的企业和组织。这种系统的核心目标是确保只有经过授权的用户能够访问特定的资源,同时提供灵活的角色分配和权限管理...

    通用权限\通用权限管理概要设计说明书

    在通用权限管理系统的设计中,通常会遵循RBAC(Role-Based Access Control)模型,通过角色来定义一组权限,用户通过加入角色来获得相应的访问权限。此外,系统还需要具备权限的动态调整能力,以便应对业务需求的...

    MVC通用权限系统1

    **MVC模式详解** MVC(Model-View-Controller)是一种...总的来说,“MVC通用权限系统1”是一个实用的开发参考,有助于初学者理解MVC模式在实际项目中的运用,同时为构建高效、可维护的权限管理系统提供了基础架构。

    winform通用权限开发框架示例

    本示例“winform通用权限开发框架”旨在提供一个基础的、可扩展的权限管理解决方案,适用于各种企业级应用。 权限管理是任何复杂系统的核心组成部分,尤其对于多用户、多角色的应用程序而言。通用权限开发框架通常...

    pms.rar_c# 通用权限_权限系统_通用权限

    【标题】"pms.rar_c# 通用权限_权限系统_通用权限" 指的是一份使用C#编程语言开发的通用权限管理系统。这样的系统是企业信息化建设中不可或缺的一部分,它负责管理用户对系统资源的访问权限,确保数据安全和操作合规...

    mvc通用权限系统

    "Mvc通用权限系统"是一个基于MVC(Model-View-Controller)架构设计的软件系统,其主要目标是提供一个适用于多种应用场景的权限管理解决方案。MVC模式是一种广泛应用在Web开发中的设计模式,它将应用程序分为三个...

    吉日通用权限管理系统 V3.7

    7. **软件工程实践**: 作为一个成熟的产品,"吉日通用权限管理系统 V3.7"很可能遵循了良好的软件工程实践,如代码规范、注释、模块化设计等,这有助于提高代码质量和可维护性。 8. **测试与调试**: 由于描述中提到...

    Box通用权限系统框架源码

    1. **权限模型**:在Box通用权限系统框架中,权限模型通常由三个基本元素组成:用户(User)、角色(Role)和权限(Permission)。用户可以被赋予一个或多个角色,每个角色拥有特定的权限集合。通过这样的模型,可以...

    通用权限管理概要设计说明书

    《通用权限管理系统设计篇(三)》可能详细介绍了系统的模块划分和接口设计,包括用户管理、角色管理、权限分配、权限验证等功能模块。每个模块应有明确的职责和接口,以实现高内聚、低耦合的设计原则。 在《通用...

    通用权限管理源代码(asp.net)

    3. **权限管理模型**:通用权限管理通常基于RBAC(Role-Based Access Control,基于角色的访问控制)模型。在这个模型中,用户被分配到不同的角色,每个角色有特定的操作权限。这样,通过角色的管理,可以轻松地批量...

    java模块级通用权限

    在Java中,常见的权限模型有RBAC(Role-Based Access Control,基于角色的访问控制)和ACL(Access Control List,访问控制列表)。RBAC模型将权限与角色关联,用户通过属于特定角色来获得权限。ACL模型则直接将权限...

    通用权限管理

    【通用权限管理】是IT行业中一个重要的组成部分,它涉及到系统安全性和用户体验,是任何大型企业级应用或平台不可或缺的功能模块。权限管理的核心目标是确保只有具备相应权限的用户才能访问和操作特定的数据或功能,...

    ASP.NET通用权限管理系统

    【ASP.NET通用权限管理系统】是基于微软的ASP.NET技术构建的一款高效、稳定且灵活的权限管理解决方案。ASP.NET是Microsoft .NET Framework的一部分,它提供了一种用于构建Web应用程序的强健平台,支持多种编程语言,...

    RBAC 通用权限设计

    ### RBAC 通用权限设计 #### 一、引言 在现代信息技术系统中,权限管理是确保信息安全的关键组成部分。良好的权限管理系统能够有效地提高数据的安全性和操作的可控性,同时简化管理流程。基于角色的访问控制(Role...

    c# 基于MySQL的通用权限框架(完整源码)

    在IT行业中,构建一个基于MySQL的通用权限框架是常见的需求,尤其对于企业级应用来说,权限管理是系统安全的关键组成部分。本项目以C#作为主要编程语言,利用MySQL数据库存储和管理用户权限,旨在提供一个完整的、可...

Global site tag (gtag.js) - Google Analytics