很多人在做每件事情的时候都会遇到各种问题和困难,当遇到困难时需要去主动解决否则会越积累越多也越不好解决,时间长了慢慢的让这种思维成为我们的习惯,它会让你受益一生。
写每篇博客都会有所收获和思想感触,不成熟的、成熟的、自己的或是借鉴别人的都可以拿过来写写,写博客和写散文类似若能达到形散神不散的地步,水平也就到一定境界了。
做权限这块时整体上知道了设计思路该如何实现,但是还是对于一些细节的控制不是特别理解,看了若干遍并查了查资料问了问别人讨论了一下清晰了很多,对于模糊的东西请教别人或者一起讨论对加深理解很有帮助,即使大家都不懂也可以交流一下各自的理解,也许你会从别人的思路中受到启发在与别人思想的碰撞中产生璀璨的火花。
下面说一下存在的几个问题:
多个角色授予一个用户的冲突问题
为模块授权,通过创建角色,并为该角色分配权限,然后便可以为用户分配角色了(可以为多个),从而达到复用和统一控制的目的。一个用户可以拥有多个角色,在给客户提供灵活方便的同时,问题来了——多个角色被授予同一个用户时出现授权冲突,比如:角色A对模块A有删除权限,但角色B对模块A的删除权限则被禁止,这时候,如果将角色A和角色B同时授予用户A,则会造成困扰,它应该是以角色A的授权为准,还是应该以角色B的授权为准?
办法总比问题多,那么我们应该考虑解决方案,并从中选择最优解。针对这个问题,可以考虑如下解决办法:
1.如果多个角色之间有授权冲突,则不允许将这些角色同时授予同一个用户,比如,在上述例子中,不允许将角色A和角色B同时授予用户A
2.允许将有授权冲突的角色同时授予同一个用户,但用户在某个时刻只能扮演其中的某个角色。在用户登陆后台管理界面之后,可以通过切换角色,来执行不同的操作!
3.允许将有授权冲突的角色同时授予同一个用户,对用户的这些角色来说,有优先级的概念,当将角色分配给用户的时候,应该设置它的优先级。同一个角色在不同的用户那里可能具有不同的优先级。当授权有冲突的时候,以优先级更高的角色授权为准。
前两种方法不够灵活,比较死板,过于强硬,而第三种方法比较人性化。
对每个模块操作的控制
需要控制每个模块的增删改查操作,如果需求变了也可能增加或者减少操作种类,常规想法是增加实体类属性或表字段来控制但是这种方式不灵活,因为数据库结构一旦定型是不会轻易修改,如果有用一个字段表示多个操作类型就可以解决这样的问题,我们用一个int类型表示,java中int类型占32bit这样可以用一个bit代表一种操作类型,bit的值0或1表示有效无效让操作种类和有效无效两个功能合二为一。
角色或模块给同一个用户授权的冲突问题
在给用户授权的时候主要是通过角色授予,也可以给用户单独授权,如果同一个或多个资源模块既给用户单独授权又通过角色授权就会产生冲突,如果解决该问题本OA中添加了一个字段“是否继承”,这里的继承第一遍看时不好理解,“继承”加了双引号显然不是父类子类一样的关系继承,这里的继承可以理解为是否使用对用户的单独授权,继承表示不使用单独授权而是查询用户所拥有角色的授权,使用从角色那里继承来得权限。
这是一个简单的权限管理,有关更多权限实现见下篇博客……
分享到:
相关推荐
在设计权限管理系统时,需要考虑以下几个方面: 1. 不同职责的人员,对于系统操作的权限应该是不同的。 2. 可以对“组”进行权限分配。 3. 权限管理系统应该是可扩展的。 为了实现这些需求,我们可以使用NoahWeb的...
本项目"用户权限管理模块(C++实现)"是一个用C++编程语言实现的权限管理解决方案,它包含了几个核心功能,如单例模式、用户区分、用户管理以及密码安全存储。 首先,我们来深入理解C++实现的用户权限管理模块。C++...
在用户权限管理中,主要涉及以下几个核心概念和技术: 1. **身份验证**:这是确定用户身份的过程。在C#中,可以使用`System.Security.Principal`命名空间中的类,如`GenericPrincipal`和`WindowsPrincipal`,结合...
权限管理是指对应用系统的不同用户拥有与其角色相配对的特定几个应用子系统(或模块)的不同的操作权限。权限管理可以分为两个层次:功能层的访问权限管理和数据库访问层的权限管理。传统的应用系统权限管理仅控制到...
在设计权限管理系统时,我们需要考虑到以下几个需求: * 不同职责的人员,对于系统操作的权限应该是不同的。 * 可以对“组”进行权限分配。 * 权限管理系统应该是可扩展的。 在数据库设计中,我们使用了三个实体表...
下面将详细阐述OA权限管理设计的几个关键方面。 首先,权限管理应具备分层次的权限分配。在OA系统中,权限通常基于模块和动作来设定。模块代表系统的各个子模块,可能对应菜单,而动作则指模块内的具体操作,如浏览...
在JSP中实现权限管理,主要涉及以下几个步骤: 1. **用户认证**:验证用户的身份,通常通过用户名和密码登录。 2. **会话管理**:使用session来存储用户信息和权限,确保用户在登录后的操作都与其权限相符。 3. **...
在设计一个简单的二级文件管理系统时,需要考虑以下几个方面: 1. 文件系统的组织结构:文件系统的组织结构决定了文件的存储和检索方式。 2. 文件的元数据管理:文件的元数据需要存储在文件系统中,以便快速检索和...
根据给出的文件内容,本文将介绍几个核心知识点,包括智能巡检系统的概念、权限控制技术、基于角色的访问控制(RBAC)模型以及如何改进RBAC模型以适应智能巡检系统的需求。 智能巡检系统是利用现代信息技术,如定位...
在Java中实现B/S权限管理,主要涉及到以下几个核心知识点: 1. **MVC设计模式**:Model-View-Controller(模型-视图-控制器)是Web开发中常用的设计模式。在权限管理系统中,模型负责数据的处理和存储,视图负责...
在实现角色权限管理时,通常会涉及以下几个关键步骤: 1. 角色设计:根据业务需求,确定需要的角色类型及其对应的权限。这一步需要考虑到各种用户群体的需求和安全级别。 2. 权限定义:明确每个角色可以执行的操作...
在本文中,我们将深入探讨用户权限管理的设计与实现,基于提供的文件名"实现业务系统中的用户权限管理--设计篇.docx"和"实现业务系统中的用户权限管理--实现篇.docx"来解析这一主题。 首先,我们要理解用户权限管理...
在实际项目中,还需要考虑安全性问题,如防止SQL注入、XSS攻击等,以及性能优化,如权限缓存、分布式权限管理等。 综上所述,Web网站权限管理系统设计与实现是一门综合性的技术工作,涉及到Web服务、Web开发、Web...
在系统实现过程中,还需要考虑以下几个关键点: 1. 安全性:确保权限分配和验证过程的安全,防止权限篡改和越权访问。 2. 可扩展性:随着业务发展,系统应支持添加新的角色和权限,且不影响现有功能。 3. 易用性:...
权限管理通常包括以下几个关键部分: 1. **用户管理**:创建、修改和删除用户信息,同时支持用户登录、注销功能。每个用户都有独特的身份标识,用于区分不同的操作者。 2. **角色管理**:定义和管理各种角色,角色...
在Java权限管理系统中,通常涉及用户认证(Authentication)、授权(Authorization)和角色(Role)管理等几个关键部分。 1. 用户认证:这是验证用户身份的过程,通常通过用户名和密码进行。在Java中,我们可以使用...
在提供的"权限设置Demo"中,我们可以看到一个简单的权限管理示例,可能包含以下几个部分: 4.1 用户注册与登录:用户创建并登录账户,验证用户名和密码。 4.2 角色管理:管理员可以创建、编辑和删除角色,分配或...
在这个设计中,我们需要实现几个核心功能: 1. 用户登录(Login):设计一个登录系统,用户需输入正确的用户名和密码才能访问文件系统。在这里,预设的用户名为"admin",密码也为"admin"。登录验证成功后,用户才能...
在信用管理系统中,权限管理主要包括以下几个方面: 1. **用户角色定义**:系统中通常会预设多种用户角色,如管理员、普通用户、审核员等,每个角色具有不同的权限集合。通过角色划分,可以高效地管理大量用户的...
在ThinkPHP框架中,实现RBAC通常包括以下几个步骤: 1. **设计数据库表结构**:创建用户(user)、角色(role)、权限(permission)以及角色-权限关联关系(role_permission)等表。用户表记录用户信息,角色表存储角色...