`
man1900
  • 浏览: 429014 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JOffice中的权限管理--功能粒度的权限管理配置

阅读更多


JOffice中的权限管理是基于角色的管理策略,采用Spring Security2的配置方式,同时能够结合EXT3来进行整个系统的权限管理,通过使用配置文件,进行整个系统的功能集中管理,包括系统左边的导航菜单,数据列表中的功能操作权限。我们知道,在传统的Web项目中,我们都是采用基于URL进行权限控制的。基于EXT的应用也不例外,只不过我们是需要结合前台的功能菜单一起,前台显示出来的功能菜单,其后台均代表可以访问。

使用方法:

一、先在menu.xml中配置系统的功能,如我们配置角色管理的权限,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Menus>
	<Items id="SystemSetting" text="系统设置" iconCls="menu-system">
		...
		<Item id="AppRoleView" iconCls="menu-role" text="角色设置">
			<Function id="_AppRoleList" text="查看角色" iconCls="menu-list">
				<url>/system/listAppRole.do</url>
			</Function>
			<Function id="_AppRoleAdd" text="添加角色" iconCls="menu-add">
				<url>/system/listAppRole.do</url>
				<url>/system/saveAppRole.do</url>
			</Function>
			<Function id="_AppRoleEdit" text="编辑角色" iconCls="menu-add">
				<url>/system/listAppRole.do</url>
				<url>/system/saveAppRole.do</url>
			</Function>
			<Function id="_AppRoleDel" text="删除角色" iconCls="menu-del">
				<url>/system/listAppRole.do</url>
				<url>/system/mulDelAppRole.do</url>
			</Function>
			<Function id="_AppRoleGrant" text="授权角色">
				<url>/system/listAppRole.do</url>
				<url>/system/grantAppRole.do</url>
			</Function>
		</Item>
		...
		<Item id="ReportTemplateView" iconCls="menu-report" text="报表管理">
			...
		</Item>
	</Items>
	<!--其他模块 -->
	<Items>
		...
	</Items>
</Menus>
 



说明:

1.menu.xml为整个系统的功能列表,系统的左边菜单也是从该文件显示出来,如:
    

2.进入某项菜单中,会进入相应的模块的管理界面,如:

 

上面的功能“添加角色”,“删除角色”以及管理一栏中的“删除”,“编辑”,“授权”等功能,则对应为menu.xml中的Item下的Function标签的配置,如:
添加角色对应:

<Function id="_AppRoleAdd" text="添加角色" iconCls="menu-add">
		<url>/system/listAppRole.do</url>
	        <url>/system/saveAppRole.do</url>
</Function>
 


其下包括两个Url,一个是/system/listAppRole.do,另一Url /system/saveAppRole.do,表示当我们访问这个功能完成角色添加时,需要访问这两个URL,后台会根据当前用户的角色是否授权访问这个功能而决定是否开放这两个URL给当前用户访问,否则,前台浏览器会弹出一个类似如下的提示,告诉用户当前没有权限访问这个URL。

 

 

 

当然,这种还是要避免出现,因为系统在客户端出现的功能菜单,均是有权访问的。

3.前台的代码配置

    前台的用户登录系统后,会有一个全局的变量存储用户的所有权限(其会把所有的角色的配置抽取出来,去掉重复的权限配置),可以在客户端直接检查用户是否有权限访问某一个菜单的功能,如我们检查用户是否直接有访问“添加角色”的功能,则可以调用系统提供的方法:
    isGranted(‘_AppRoleAdd’);
该函数返回为true则代表可以访问。

因此我们若要进行更高的权限粒度控制,我们需要把原来的代码进行改装一下。如:
AppRoleView.js需要进行更改。

修改一:

var toolbar = new Ext.Toolbar({
				id : 'AppRoleFootBar',
				height : 30,
				bodyStyle:'text-align:left',
				items : []
			});
	if(isGranted('_AppRoleAdd')){	
		toolbar.add(new Ext.Button({
					iconCls : 'btn-add',
					text : '添加角色',
					handler : function() {
						new AppRoleForm();
					}
				}));
	}
	if (isGranted('_AppRoleDel')) {
		toolbar.add(new Ext.Button({
					iconCls : 'btn-del',
					text : '删除角色',
					handler : function() {
						var grid = Ext.getCmp("AppRoleGrid");
						var selectRecords = grid.getSelectionModel().getSelections();

						if (selectRecords.length == 0) {
							Ext.Msg.alert("信息", "请选择要删除的记录!");
							return;
						}
						var ids = Array();
						for (var i = 0; i < selectRecords.length; i++) {
							ids.push(selectRecords[i].data.roleId);
						}
						AppRoleView.remove(ids);
					}
				}));
	}
 

修改二
    管理列中的栏目功能:

if(isGranted('_AppRoleDel'))
	str = '<button title="删除" value=" " class="btn-del" onclick="AppRoleView.remove('+ editId + ')"></button>';
if(isGranted('_AppRoleEdit'))
       str += '&nbsp;<button title="编辑" value=" " class="btn-edit" onclick="AppRoleView.edit('+ editId + ')"></button>';
if(isGranted('_AppRoleGrant'))
	str += '&nbsp;<button title="授权" value=" " class="btn-grant" onclick="AppRoleView.grant('+ editId + ',\'' + roleName + '\')">&nbsp;</button>';

 

二、同步menu.xml的数据至数据库

打开配置common/config/下的config.properties的这个配置,如下:
isSynMenu=true

打开此配置则表示会把menu.xml中的所有的Function中的url同步到数据库,转给Spring Security进行匹配,则此时进行角色的权限授予才会真正生效。

三、为角色进行相应的授权

 


在此,将看到该用户访问该模块时,只有“添加角色”这个功能。同样,以上的权限管理也控制着整个系统的左边菜单的权限,如下图所示:

 

 

 

四、拥有超级管理角色,将具有系统的所有访问权限。

 

 

该实现涉及到相关比较多的知识,表设计如下所示:

 

 

 

其实现细节,请关注后面的博文《JOffice 的基于角色的权限设计及实现(Spring Security Ext版本)》

  • 大小: 32.5 KB
  • 大小: 36.4 KB
  • 大小: 31.5 KB
  • 大小: 93.9 KB
  • 大小: 48.6 KB
  • 大小: 80.1 KB
分享到:
评论
11 楼 yzj578492228 2014-01-09  
Lz大才求源码:578492228@qq.com
10 楼 xingjing314 2013-06-26  
楼主我也正在学习 希望能给一份源代码 我的邮箱是370946702@qq.com
9 楼 superlovesdo 2013-01-14  
楼主,能整理一下把源码发我一份吗?现在正在学习这技术, 邮箱地址tsxy_xujing@163.com  谢谢了。。。
8 楼 che4401 2012-05-14  
楼主,你把源码发到我邮箱吗?
che4401@163.com
7 楼 hyyx1122 2012-05-01  
hyyx1122 写道
楼主写的不错啊
最近在学spring security
求下源码,学习

忘了地址了  icesn0w@vip.qq.com
6 楼 hyyx1122 2012-05-01  
楼主写的不错啊
最近在学spring security
求下源码,学习
5 楼 tmartin 2012-03-14  
最近开始学习spring security + extJS 正在尝试学习博主做法,如果能得到一份源码,不胜感激。tmartin@126.com
4 楼 achilles12 2011-12-08  
你好,楼主,同求下相关代码。
achilles12@163.com 谢谢
3 楼 sujh8427 2011-12-08  
楼主,源码你能发给我学习下?邮箱:sujh6688@gmail.com
2 楼 whwh13764799336 2011-10-31  
写的很好,能整理下发到我邮箱吗?谢谢,lovehui002688@sina.com
1 楼 duanvschao 2010-01-20  
楼主,有没有源文件和数据库啊 有的话可以发到我邮箱里面吗 我的邮箱是duanvschao@163.com 谢谢了啊!!!

相关推荐

    JOffice V1.2 beta

    这个JOffice V1.2 beta版,也就是官方说开源的版本之一。 说实话,这个公司很讨厌,打着开源的幌子来宣传自己的产品,里面的 东西根本没有开源,还很恶心的包留了一部分代码,htcore.jar。 对于这样的开源,我表示...

    权限实现实例(Ext+java)

    JOffice中的权限管理是基于角色的管理策略,采用Spring Security2的配置方式,同时能够结合EXT3来进行整个系统的权限管理,通过使用配置文件,进行整个系统的功能集中管理,包括系统左边的导航菜单,数据列表中的...

    JOffice1.3使用手册.

    关于 JOffice1.3使用手册,方便快捷,大家来下载

    Joffice2.1操作手册

    系统设置负责整个系统的基础参数配置及管理功能,如系统的账号,角色管理,岗位人员管理,部门人员管理,人员维度管理,附件管理,报表设置,数据字典,签章管理,套红模板管理,工作流相关的配置及管理。...

    JOffice2中的JBPM4的任务回退实现

    JOffice2中的JBPM4的任务回退实现

    joffice技术框架介绍

    joffice技术框架介绍。

    joffice文档

    // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 ...

    joffice文档转pdf再转swf

    office文档转pdf后,再转swf,最终显示需要的一些工具及jar包,包括一个office转pdf转swf的java文件。因目前可上传的文件大小限制,OpenOffice安装文件未上传,工具目前最新版本为3.4.1,请另行下载

    java打jar包方法

    用cmd命令打jar包 目标——将D:\myfile目录下的所有文件及文件夹打包到license.jar包中 步骤——1.用cd命令跳转至D:\myfile目录下 2.输入命令jar cvf license.jar *.* mysql-&gt;source F:/joffice131.sql

    JoPro:一个应用程序中的生产力和Office套件。-开源

    JoPro是一个生产力和办公套件,将文字处理器,电子表格设计器,演示设计器和svg查看器集成到一个应用程序中! 基于Netbeans平台。 图像和代码由Anthony Goubard设计。 最初称为Joffice。

    JOffVis:基于 Swing(Java)的工具,用于可视化 BIFF(二进制交换文件格式)文件

    JOffVis 一个基于 Java Swing 的工具,用于可视化 ...先决条件:1) Java SDK 72) Maven 3要编译应用程序,请运行以下命令mvn 干净编译要启动应用程序,请运行以下命令mvn exec:java -Dexec.mainClass="joffice.gui.App

Global site tag (gtag.js) - Google Analytics