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;
}
分享到:
相关推荐
我权限项目分为上左右三部分,5张表:用户表,角色表,资源表(分为权限树,还有页面的按钮资源),用户角色中间表,角色资源中间表。通过登陆用户id联查可以得到相应的权限,展现给用户!并将该用户的资源权限保存...
简单测权限菜单设计,送给delphi新手!
C# WinForm实现基于角色权限的菜单,vs2008或更高版本即可完美运行,winform实现的权限菜单。
目前系统已经基本集成的功能包含有,用户管理,角色管理,菜单管理,组织管理,数据字典,日志管理,接口管理(暂时未完成实际应用),流程配置,运行流程管理,消息管理(暂无实际应用),业务模块没有做。后台是基于...
我们开发业务系统的时候,基本上都会涉及到权限管理模块,要求不同的人看到不同的菜单,操作不同的按钮,看到不同的数据。很多初学者面对这样的需求不知道如何下手,特别是稍微复杂点的权限,更是找不到方向,为此...
用户菜单权限表建表语句以及数据插入语句,后台管理系统搭建必备,学习专用。 如果使用外键关联,在对表进行数据操作时就考虑另一张关联的表,相当于两张表就绑在一起了,操作这张表就必须考虑另一张关联表。我们...
权限管理,角色管理,组管理,菜单管理以及权限组。
企业级权限管理系统设计,支持菜单权限、按钮权限、数据权限、权限可以设置无限极,非常实用,满足90%以上的企业应用
基于SpringBoot的后台管理系统,实现了系统权限、动态菜单,用户权限,数据字典等基础功能。基于uniapp的商城移动端,实现了商品分类,用户注册和登录,下单和购物车等操作,由于近期比较忙,后期更新优惠券,拼团、...
具有权限控制的通用菜单的设计与实现.zip
MVC通用权限系统1.3源码 功能介绍: 前端采用LigerUI开发!利用asp.net MVC3做的权限管理,采用EF数据访问,传统的N层架构 管理页面包括: 系统日志管理 菜单管理 系统权限维护 角色权限管理 部门管理 用户...
设计了一种面向用户的菜单权限的设置方法,建立了所需的权限表,给出了面向用户的菜单权限的授予和收回方法、菜单权限的检查方法的算法描述。在设计和实现过程中,利用动态生成、获取和设置菜单属性的方法,实现用户...
如上图,拥有菜单管理、角色管理、用户管理、系统设置、日志管理、Banner管理、文章管理、通知管理这几个页面,对于这几个页面的访问以及页面上的按钮是否能够显示、点击,这些都是属于权限。 数据库设计 一共五...
我们可以把这些资源简单概括为静态资源(功能操作、数据列)和动态资源(数据),也分别称为对象资源和数据资源,后者是我们在系统设计与实现中的叫法。 系统的目标就是对应用系统的所有对象资源和数据资源进行权限...
一套简单通用的后台管理系统源码+项目说明(主要功能有:权限管理、菜单管理、用户管理,系统设置、实时日志,实时监控,API加密,以及登录用户修改密码、配置个性菜单等).zip 一套简单通用的后台管理系统源码+项目...
用户应用系统的具体操作者,我这里设计用户是可以直接给用户分配菜单/按钮,也可以通过角色分配权限。 角色为了对许多拥有相似权限的用户进行分类管理,定义了角色的概念,以上所有的权限资源都可以分配给角色,...
在系统中,权限通过模块 +动作来产生,模块就是整个系统中的一个子模块,可能对应一个 菜单,动作也就是整个模块中(在B/S 系统中也就是一个页面的所有操作,比如“ 浏览、添 加、修改、删除” 等)。将模块与之组合...
毕业设计,基于SpringBoot+Vue+MySql开发的前后端分离的基础权限系统,内含Java完整源代码,数据库脚本 基于Spring Boot+Spring Security+Jwt+kaptcha+Vue+Element-UI的基础权限系统,可设置不同用户,不同角色和...
1.系统权限维护数据(控制器和动作不对应,主要是tbPermission录入数据的问题)出现大量的录入出错,已修正,请重新附加新的数据库数据。 2.用户管理无法,修改,保存出现,无法保存角色信息导致用户权限异常。 3....
CRM用户权限控制设置,CRM用户权限控制设置