B/S系统菜单和用户角色绑定。
先上数据库表结构:
用户表 T_USER(USERID NUMBER,NAME VARCHAR2(63),PWD VARCHAR2(127))
角色表 T_ROLE(ROLEID NUMBER,NAME VARCHAR2(63))
用户角色关系表 T_USER_ROLE(USERID NUMBER,ROLEID NUMBER)
菜单表 T_MENU(MENUID NUMBER,MENUNAME VARCHAR2(30),URL VARCHAR2(128),MODULE VARCHAR2(50),PERMISSION INT)
角色菜单关系表 T_ROLE_MENU(MENUID NUMBER,ROLEID NUMBER)
struts2 Action配置
<action name="*/*" method="{2}" class="{1}Action">
<result name="input">/view/{1}/{1}_%{preAction}.jsp</result>
<result name="insert">/view/{1}/{1}_{2}.jsp</result>
...
</action>
其实他们之间的关系简单说就是:用户和角色多对多,角色和菜单多对多。
先说下系统URL组织方式/sys/module/crud.jspx,即一个功能一个module,比如用户管理/sys/user/list.jspx,/sys/user/insert.jspx 。。。。。
URL中的module对应T_MENU表中的module字段,Permission字段对应的list,insert等对应的标示码。我的标示规则是 list - 1,insert - 2,edit - 4,save - 8,delete - 16以此类推。
SELECT MODULE,SUM(PERMISSION) AS PM FROM T_MENU INNER JOIN....就可以列表出用户各个模块的总权限,将此列表存放于用户Session中(以Map方式存放方便检索)。
接下来说怎么将上面那些结合起来:
1、首先写一个ContextLoadListner用来初始化标示规则,我用的是Xml。
<Permissions>
<Permission canIgnore="false">
<Name>list</Name><Value>1</Value>
</Permission>
<Permission canIgnore="true">
<Name>select</Name><Value>256</Value>
</Permission>
<Permissions>
canIgnore标示该动作是否可以忽略权限判断,比如有的页面需要弹出一个窗口来选择部门(/sys/depart/select.jspx)这个时候select是不经过权限判断的。
初始化完成后Map<String,Permission>放到ApplicationContext里。
2、写一个拦截器(我的是Struts2)
首先取URL中的Action,用此Action到Context的Map<String,Permission>中查找Permission 对象,
permission = definition.get(action);
if(permission.canIgnore())
return true;
else{
Integer modulePermission = session中的.get(module);
return permission.getValue() & modulePermission > 0;
}
分享到:
相关推荐
在Delphi编程环境中,设计一个权限菜单是管理用户访问控制的关键步骤。这涉及到根据用户的权限级别来决定他们能看到哪些功能或菜单项。本例程专为Delphi新手提供,旨在帮助初学者理解如何实现这样的系统。 首先,...
我权限项目分为上左右三部分,5张表:用户表,角色表,资源表(分为权限树,还有页面的按钮资源),用户角色中间表,角色资源中间表。通过登陆用户id联查可以得到相应的权限,展现给用户!并将该用户的资源权限保存...
6. **权限更新**:当用户角色改变或系统功能调整时,权限系统应能快速响应并更新用户的菜单显示。这需要后端与前端的紧密配合,实现权限的实时同步。 7. **权限策略**:可以采用RBAC(Role-Based Access Control)...
这个系统设计了完善的菜单和按钮权限控制,为多用户环境提供了安全的访问策略。在该系统中,SpringMVC作为核心的控制层,负责处理HTTP请求并协调各个组件;Hibernate则作为持久化层,简化了与MySQL数据库的交互;而...
用户权限管理菜单是软件系统中不可或缺的一个重要组成部分,它主要用于控制不同用户对系统资源的访问权限,确保数据安全和操作合规性。在商业级的软件应用中,用户权限管理尤其关键,因为它涉及到企业的核心业务流程...
通过以上步骤,我们可以构建出一个安全且易于维护的基于角色权限的菜单系统。此项目提供了一个实际的示例,可以帮助开发者更好地理解和应用这些概念。在实际项目中,可能还需要考虑更多细节,如缓存角色和权限信息以...
- 高效通信:DUBBO接口使得权限系统可以与其他服务进行低延迟、高吞吐量的数据交换,提高系统整体性能。 - 扩展性:DUBBO支持动态调整服务提供者和消费者,便于系统的横向扩展,适应业务增长。 6. **系统架构**:...
权限系统设计思路 权限系统是一个非常重要的安全机制,在现代企业中扮演着至关重要的角色。权限系统的设计主要是为了限制用户的访问范围,防止未经授权的访问和操作。下面是权限系统设计思路的详细介绍: 一、权限...
本文将详细介绍如何利用C#实现菜单权限控制,包括数据库设计、数据操作以及具体的编程实现。 #### 一、数据库设计与数据操作 **1. 创建数据表** 为了存储菜单权限信息,首先需要创建一个数据表`t_...
在IT行业中,权限控制是确保系统安全性和用户体验的关键部分,特别是在企业级应用中。SpringBoot作为Java领域广泛使用的微服务框架,提供了丰富的功能来帮助开发者实现权限管理。本篇文章将详细探讨如何在SpringBoot...
本篇文章将深入探讨一个基于.NET框架实现的权限管理系统,特别关注其数据库设计、菜单动态添加功能以及北大青鸟的技术实践。 首先,我们来了解一下.NET框架。.NET是由微软公司开发的开源平台,用于构建高性能、跨...
通过合理的角色设计、权限编码以及前端与后端的交互,可以实现精细化的权限控制,确保系统的安全性和用户的个性化体验。在开发过程中,必须确保每个步骤的逻辑清晰,以避免潜在的安全风险和用户体验问题。
通用权限系统设计的难点在于如何满足不同系统对权限需求的多样性,同时又保持设计的灵活性和扩展性。 设计目标包括创建一个灵活、通用且方便的权限管理系统。系统中的资源分为静态资源和动态资源两类。静态资源主要...
通用权限系统设计旨在确保不同职责的用户在操作系统时拥有适当的操作权限,提高管理效率并确保系统安全性。在大型企业业务系统中,权限管理是至关重要的,因为它允许管理员批量分配权限,避免了为每个员工单独设置...
详细的权限管理系统设计 权限管理系统是每个 B/S 系统中不可或缺的一部分,它可以控制用户对系统的访问权限,确保系统的安全性和可靠性。本文将详细介绍如何设计一个详细的权限管理系统,满足大部分 B/S 系统对用户...
在IT行业中,Web应用系统的设计和开发是至关重要的部分,其中菜单及权限控制是系统功能的核心组成部分。这个过程涉及到用户界面的组织结构以及不同用户访问和操作系统的权限管理。以下是对"Web应用系统菜单及权限...
动态菜单是后台系统设计中的一个重要组成部分,它允许根据用户角色和权限动态生成显示的菜单。这种方式能够极大地提高系统的灵活性和可扩展性,避免了因为权限变化而频繁修改前端代码的问题。动态菜单通常基于数据...
这种动态菜单生成基于用户角色的权限信息,提高了系统的安全性和用户体验。 5. **数据库结构**: 为了实现这一功能,通常需要设计一个数据库来存储角色、用户、权限之间的关系。可能包含以下表:`Users`(用户)、...
本文将详细阐述权限管理系统的设计,包括核心概念、数据模型和功能模块。 首先,权限管理是系统安全的基础,它确保了只有拥有特定权限的用户才能执行特定的操作。在本系统中,权限表(right)用于存储所有权限的...