本人从事j2ee的开发三年了,见过很多权限参考模型。我感觉虽然很多人可以做出一套权限管理模块,但是真正做得好的并不多(吐槽一下。我自己也没做出优秀的东西)。其中有部分人对权限管理模块不是很清楚,还有一部分是做出来的都权限参考模型实现能力不强。我个人觉得要做一个好的权限参考模型出来。首先要对权限参考模型的概念和原理有深刻的理解。然后有个好的设计和实现。这边我将自己的几年的工作感想写出来给大家分享一下。
权限参考模型有三个主要的概念:用户 角色 权限
用户:是在一个业务逻辑中存在的实体。是动作的发出者
角色:是一些具有共性的用户组的集合(这个集合是可以为空的)
权限:执行一系列动作的集合。简单的说就是业务操作的集合
这边就有几个问题了
1 用户和角色之间是什么关系?
2 角色分为什么类型?
3 角色和部门之前是什么关系?
4 角色和权限之间的关系?
5 用户和权限之间是什么关系?
这5个问题是这三年来一只在思考的问题。下面我将一个一个给大家分析
用户和角色之间是多对多的关系。也就是说一个用户可能属于几个角色。一个角色可以拥有很多用户。下面我们来分析第二个问题。角色大致可以分为几种类型。也许有人很奇怪,怎么角色还要分类型。我想跟大家说的是。角色真的要分类型,一般是分为管理角色和业务角色,管理角色一般是控制系统本身的权限。具体的说系统权限包括人员的添加。部门的创建。角色的创建等;
业务角色就是具体的操作权限。如果订单管理,销售管理。财务管理等为什么要这么分呢。结合我三年的经验我发现现在很多大型的企业特别是我工作的金融行业。他们的管理和业务操作区分很明显,如果一个管理员既能控制管理又能控制业务,那是一件多么恐怖的事情。下面我们接着第三个问题的讨论角色和部门之间是什么关系,也许有人问角色和部门有说没关系,经过我这三年的经验。我想跟大家说,角色和部门之间是有关系。我记得我之前有一个项目是这样的需求。如果一个总部的人登录系统。他点击一个操作。比如说查看订单。这个时候他就只能看到他们部门和子部分的数据。如果我们的角色和部门没关系。那么真的是一件很复杂的事情。当然我是将一个角色和部门做了关联。我们根据角色所属的部门就可以判断。当前用户可以查看那些部门的数据。角色和权限之间也是多对多的关系。下面我们重点分析用户和权限之间的关系。也许有人要问。不是有角色吗。怎么又直接让用户和权限扯上关系呢。事实上一套完整的权限参考模型就需要。我之前就碰到这么一个客户。他就提出创建一个用户。然后就要直接可以分配权限。我们告诉他可以先创建一个角色。然后将这个用户添加到这个角色,但是他非要直接分配。大家也知道我们做程序的。特别是那些大客户,我们只能尽量的满足。这个时候就产生了一系列新的问题了。首先用户要分为管理和业务类型。这样可以分配对应的权限。假如一个客户拥有一些权限同时将这个用户分配一个角色。这个用户所拥有的权限比这个角色拥有的多。简单来说,就是说用户分配的权限和这个角色拥有的权限不一样。这个时候怎么办?是以用户拥有的权限为主还是以角色拥有的权限为主?我个人的看法是以个人拥有的为主,下面我来说说我的想法。角色是将一些有共性的用户组成集合。但是这些用户之间必然有差异性,角色不具备原子性。用户具备原子性,当用户直接分配了权限的时候就代表当前用户的差异性。只有原子性的用户才能体现访问这个规则的正确性。
我们接着来分析第二个大的问题:allow和deny的优先级。就是允许和拒绝的优先级哪个级别高一些。由于一些用户具有多个角色。但是有些角色是允许访问,有些角色是禁止访问。这个时候怎么办?我目前采用的做法是取这些角色拥有权限的交集。也就是说拒绝的权限高于允许正是用户角色的复杂性,所以在没有足够证据证明“里面的有些角色被拒绝但实际上这个用户不应该拒绝”的情况下,应该先把这个用户拒绝掉。这也是出于安全性的考虑。
分享到:
相关推荐
角色权限管理系统是一个关键的软件设计领域,主要用于控制和管理用户在特定系统中的访问权限。本实验报告由西安石油大学计算机学院的学生杨晓和杨莎莎完成,旨在介绍他们设计的一个小规模权限管理系统,并分享其设计...
权限控制通常包括对用户角色的定义,以及不同角色访问系统资源的权限设定。 7. **权限控制实现** 通过"组别+用户+控制器"的方式实现权限控制。具体步骤如下: - 设计三张表:用户表、菜单表和角色表。 - 用户表...
5. 角色访问控制:系统中角色访问控制是指根据用户的角色和权限来控制对系统资源的访问。 功能模块设计 系统的功能模块设计包括: 1. 用户管理:系统的用户管理模块负责用户的注册、登录、密码修改等功能。 2. ...
用户角色表(tblAccountRole)则连接用户表和角色表,表明用户拥有哪些角色。最后,权限表(tblRights)记录了每个权限的ID(rightId)和权限名称(rightName)。 在登录界面的设计上,我们通常会创建一个名为...
创建和删除角色可以定制不同的访问级别,向角色授权和撤销角色权限可以批量处理权限问题。利用角色授权可以简化权限分配,而收回利用角色授予的权限则可以方便地撤销多用户权限。 4. **权限类型**:系统级权限通常...
5. **用户角色与权限**:系统区分了管理员和普通用户,不同角色有不同的操作权限。管理员可以管理用户、考试和题库,而普通用户则主要进行考试和修改密码。 6. **数据库管理**:系统需要存储用户信息、考试记录、...
12. **权限管理**:数据库管理员可以为不同的用户或角色设置对存储过程的访问权限,增强安全性。 以上就是SQL存储过程的一些核心概念和关键知识点。在实际工作中,理解并熟练掌握这些内容,将有助于提升数据库管理...
4. **角色权限的生效**:用户登录后,其权限由其所扮演的角色决定。 通过实验,学生可以深入理解访问控制机制,了解如何在实际系统中实现安全的权限分配,同时也能体会到不同访问控制模型的优缺点。例如,DAC提供了...
### Oracle 实验报告知识点解析 #### 一、Oracle 数据库创建与配置 1. **使用DBCA创建数据库ORADB**: - **工具**: 使用Oracle提供... - 掌握了如何使用角色和权限来管理用户访问, 提高了对Oracle数据库管理的理解。
- **分配权限**:掌握为数据库角色和用户分配特定权限的方法,从而实现精细化的访问控制。 #### 二、实验内容详解 1. **身份验证模式** - **设置数据库服务器的验证方式为 Windows**:在SQL Server ...
4. **能够为数据库角色和数据库用户分配权限**:掌握如何根据业务需求灵活地分配不同的访问权限。 #### 二、实验内容 ##### 身份验证模式 1. **设置数据库服务器的身份验证方式**:首先将验证方式设置为仅支持...
通过用例描述,我们可以看到如账户管理、考试管理、题库管理和在线阅卷等关键操作,这些功能的实现需要考虑到用户的不同角色和需求。 这次课程设计不仅强化了我对JavaWeb开发的理解,也锻炼了我的编程习惯和问题...
【实验6 Web数据库编程1】主要目标是让学生掌握在WEB系统中如何有效地使用数据库,并理解不同用户角色对数据库操作的权限管理。在这个实验中,学生需要选择任意的数据库技术和相关技术来实现用户注册、登录以及权限...
该系统可能是一个基于某种编程语言(如Java, Python, PHP等)开发的,用于实现企业或组织内部的角色权限分配、用户权限控制、资源访问管理等功能。在IT行业中,权限管理系统是企业信息化建设中的关键组成部分,它有...
在`Xk`数据库中创建一个名为`Admin`的角色,赋予其修改`StuCou`表的权限,然后将`tlog`用户添加到这个角色中,从而简化权限管理。 4. **权限验证**: - **SQL语句验证**:通过执行SQL查询来验证`tlog`用户的实际...
1、软件拥有用户端和管理员端两个系统,权限分明,方便用户和管理员两种角色进行操作,防止越权访问的发生。 2、软件功能强大,拥有12306的主要功能,用户可进行查询,购票,改签,退票,管理员可对列车和订单进行...
这个任务通过实践让学生深入理解SQL Server的权限模型和角色管理,从而提高他们在实际环境中保护数据库安全的能力。评分标准强调了代码的正确性、报告的规范性和问题解决能力,这些都是数据库管理员必备的专业素养。
关于权限管理,Oracle提供了一种角色机制,通过赋予用户特定角色(如DBA),可以授予其相应的管理权限。sys用户是Oracle中的超级管理员,主要用于系统维护和实例管理,通常以sysoper或sysdba角色登录。普通用户可以...