- 浏览: 588618 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (214)
- web (36)
- oracle (10)
- http (1)
- 设计 (2)
- 项目 (1)
- 方法论 (0)
- 需求 (0)
- 成长 (6)
- 工作日志 (0)
- java基础 (20)
- java线程 (2)
- CMMI (0)
- Ext (19)
- JavaScript (16)
- OpenGL (0)
- 我的管理 (3)
- 敏捷 (0)
- mysql (7)
- 其他 (3)
- tools (10)
- 3d (1)
- 音视频直播 (9)
- C++ (1)
- 测试 (3)
- 开源 (3)
- css (4)
- 安全 (1)
- 项目管理 (1)
- NoSql (1)
- 文件系统 (1)
- cache (2)
- easyui (1)
- 3G (1)
- 单点登录 (1)
- portal (2)
- 问题 (0)
- ORM (0)
- 视频教程 (1)
- 电子书 (1)
- 规范 (2)
- spring (5)
- xml (0)
- ibatis (1)
- struts (2)
- 面试 (6)
- svn (0)
- 自考 (1)
- tomcat (3)
- html (1)
- jmesa Grid 组件 (1)
- 日志 (0)
- Jquery (1)
- os (1)
- books (0)
- download (0)
最新评论
-
remoteJavaSky:
弱弱的问一下,关于那个登录,登录后服务端会给客户端一个sess ...
Java Session 是如何实现的 -
jiangshuiy:
2中的报错是因为的源码有 package,而你的命令里面没有p ...
javac、java命令的使用 -
yanwushu:
简介明了,好文章......
ServletContext -
516456267:
第四个说明很有用
对log4j的ConversionPattern的学习 -
meShare2011:
加载顺序是先加载Tomcat Lib文件夹下的Jar包对么? ...
(转)jar not loaded. See Servlet Spec 2.3, section 9.7.2. 错误原因和解决办法
背景
B/S系统中,客户端向服务器端提交的http请求,可以分为两种:非ajax请求(一般http请求)和ajax请求。Acegi是通过一系列的filter实现的安全框架(现在好像升级成spring sceurity了)。对于非ajax请求时的session失效,acegi已经完成,即如果session失效则自动跳转到登录页面。
解决方案
Acegi对于session失效(或其他web异常)的处理是通过“org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint”类来实现的,具体配置如下:
如代码所示,acegi检测到session失效时就跳转到登录页面“/login.jsp”。实际上不管是非ajax请求还是ajax请求,acegi都是这么处理的。不过因为ajax不能实现页面跳转,所以这时的session失效处理的办法就“失效”了,客户在提交ajax后会得不到正确的处理或提示。解决这个问题的关键在于把两种http请求区分开来。本人对http的原理了解不深,笨人用笨办法,请出Ext(封装了ajax的一个js框架,其他js框架按照同样的原理理论上也可以实现)来:
如以上代码所示,EXT在ajax提交前和处理完成后提供了事件接口,分别是“'beforerequest'”和“'requestcomplete'”,我们就在这两个事件上想办法。对所有的ajax请求,我们都加上一个特殊的参数用以与非ajax请求区分“Ext.Ajax.extraParams={'ajax_extraParams':'true'};”。除此之外,我们还需acegi的辅助,修改它处理session失效时的几个参数配置:
与前面提到的acegi配置相比,修改了两个地方:"loginFormUrl"修改成"/checkLogin.jsp",即检测到失效后跳转的路径;增加了一个"serverSideRedirect"属性并将其配置成true,即采用“forward”方式跳转(false则才用“redirect”方式跳转),之所以要采用“forward”方式是因为我们需要获取前面由EXT提交过来用以检测ajax请求的参数“ajax_extraParams”。
这样跳转到“checkLogin.jsp”后,我们就可以根据是否ajax请求作出我们自己的处理了:
代码里面读取“ajax_extraParams”参数,如果没有此参数,则直接跳转到登录页面;如有且为“true”我们就认为是ajax请求,则把session失效的标记以json的方式写会客户端,最后由EXT来处理:
以上代码即EXT在ajax完成事件通过“ajax_session_invalid”属性来检测是否session失效,如果失效则提示用户,然后跳转到登录界面。
后记
整个解决方案里面需要注意两个地方:acegi的"serverSideRedirect"属性必须是“1.0.3”及其以后的版本才有;另外一个就是我们的两个参数名(ajax_extraParams和ajax_session_invalid)必须比较特殊,以与业务属性区分。
转自:http://javaphoon.iteye.com/blog/375043
B/S系统中,客户端向服务器端提交的http请求,可以分为两种:非ajax请求(一般http请求)和ajax请求。Acegi是通过一系列的filter实现的安全框架(现在好像升级成spring sceurity了)。对于非ajax请求时的session失效,acegi已经完成,即如果session失效则自动跳转到登录页面。
解决方案
Acegi对于session失效(或其他web异常)的处理是通过“org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint”类来实现的,具体配置如下:
<bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter"> <property name="authenticationEntryPoint"> <bean class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint"> <property name="loginFormUrl" value="/login.jsp"/> <property name="forceHttps" value="false"/> </bean> </property> </bean>
如代码所示,acegi检测到session失效时就跳转到登录页面“/login.jsp”。实际上不管是非ajax请求还是ajax请求,acegi都是这么处理的。不过因为ajax不能实现页面跳转,所以这时的session失效处理的办法就“失效”了,客户在提交ajax后会得不到正确的处理或提示。解决这个问题的关键在于把两种http请求区分开来。本人对http的原理了解不深,笨人用笨办法,请出Ext(封装了ajax的一个js框架,其他js框架按照同样的原理理论上也可以实现)来:
Ext.Ajax.on('beforerequest', function(){ Ext.Ajax.extraParams={'ajax_extraParams':'true'}; }, this);//
如以上代码所示,EXT在ajax提交前和处理完成后提供了事件接口,分别是“'beforerequest'”和“'requestcomplete'”,我们就在这两个事件上想办法。对所有的ajax请求,我们都加上一个特殊的参数用以与非ajax请求区分“Ext.Ajax.extraParams={'ajax_extraParams':'true'};”。除此之外,我们还需acegi的辅助,修改它处理session失效时的几个参数配置:
<bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter"> <property name="authenticationEntryPoint"> <bean class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint"> <property name="loginFormUrl" value="/checkLogin.jsp"/> <property name="forceHttps" value="false"/> <property name="serverSideRedirect" value="true"/> </bean> </property> </bean>
与前面提到的acegi配置相比,修改了两个地方:"loginFormUrl"修改成"/checkLogin.jsp",即检测到失效后跳转的路径;增加了一个"serverSideRedirect"属性并将其配置成true,即采用“forward”方式跳转(false则才用“redirect”方式跳转),之所以要采用“forward”方式是因为我们需要获取前面由EXT提交过来用以检测ajax请求的参数“ajax_extraParams”。
这样跳转到“checkLogin.jsp”后,我们就可以根据是否ajax请求作出我们自己的处理了:
<% String extraParams=request.getParameter("ajax_extraParams"); System.out.println("extraParams:"+extraParams); if("true".equals(extraParams)){ out.print("{ajax_session_invalid:true}"); return; } String contextPath = request.getContextPath(); response.sendRedirect(contextPath+"/login.jsp"); %>
代码里面读取“ajax_extraParams”参数,如果没有此参数,则直接跳转到登录页面;如有且为“true”我们就认为是ajax请求,则把session失效的标记以json的方式写会客户端,最后由EXT来处理:
Ext.Ajax.on('requestcomplete', function(conn,response){ try{ var resp=Ext.decode(response.responseText); if(resp.ajax_session_invalid){ alert("请重新登陆!") location=g_rootPath+"login.jsp"; } }catch(e){ } }, this);
以上代码即EXT在ajax完成事件通过“ajax_session_invalid”属性来检测是否session失效,如果失效则提示用户,然后跳转到登录界面。
后记
整个解决方案里面需要注意两个地方:acegi的"serverSideRedirect"属性必须是“1.0.3”及其以后的版本才有;另外一个就是我们的两个参数名(ajax_extraParams和ajax_session_invalid)必须比较特殊,以与业务属性区分。
转自:http://javaphoon.iteye.com/blog/375043
发表评论
-
extjs3.0下载
2011-12-08 19:59 1990http://download.csdn.net/detail ... -
Ext extend 总结
2010-10-09 13:33 962我之前看过一篇非常好的文章,现在找不到了,我晚上找下做一个总结 ... -
GridPanel行中图片垂直居中的方法
2010-09-18 16:05 2575new Ext.grid.Column({header: &q ... -
Ext 一个有趣的东西
2010-09-03 18:09 1006var zindex = Ext.WindowMgr.zsee ... -
在Ext中使用dhtmlxColorPicker被Window窗口覆盖解决方法
2010-09-03 18:07 1696Window中的dhtmlxColorPicker 颜色选择器 ... -
Ext颜色选择器--IE下Bug修改办法
2010-09-03 15:57 1394首先描述下问题的现象: 如果将颜色修改为空后,鼠标失去焦 ... -
Ext组件被flash挡住的原因和解决方法
2010-09-01 10:50 2092方法1:直接修改Flash的 ... -
不错的文章
2010-08-13 18:23 0http://www.cnblogs.com/over140/ ... -
Ext 表单验证方法总结
2010-08-13 18:22 1087今天在对Ext项目进行细节改进,顺便将一些使用技巧和经验记录下 ... -
EXT中创建遮罩层的类LoadMask
2010-08-11 14:57 3564一个简单的工具类,一般用来在加载数据时遮罩住元素。 如果指定了 ... -
Ext菜单联动的完美解决方案
2010-07-31 16:46 2042情景说明: 省份下拉框和城市下拉框联动: formpanel编 ... -
Ext store 中文排序问题补丁
2010-07-27 16:34 1762情景说明: store从数据库中加载有序的数据,在前台根据业务 ... -
Ext 左右互选组件ItemSelector
2010-07-26 18:47 1857使用帮助文档: http://www.figtreesyste ... -
RadioGroup补丁(无法获取选中radio的值)
2010-07-07 18:29 2939下面是重写RadioGroup的代码: Ext.overri ... -
Ext 编辑FormPanel时,根据带入的值选中CheckBoxGroup
2010-07-05 18:04 2794问题描述: Ext 2.2中的CheckBoxGroup组件有 ... -
(转载)ExtJS textField 关于验证(Regex)的一些属性说明
2010-07-05 17:47 37361: ExtJS的textField 本身具备验证输入值的一些 ... -
验证Ext Panel中form控件的方法
2010-07-04 15:42 14381、为 form控件添加一个自定义属性tab:'adTab1' ... -
Ext TabPanel tab页的隐藏方法
2010-07-04 14:40 8357开发环境: var win = Ext.Window() v ... -
Ext颜色选择器
2010-07-01 17:26 4875这个控件虽然进行了一次BUG修复但是还是有问题,在IE下还是不 ... -
修改Ext的css样式解决文本框、下拉框、时间控制浮动的问题
2009-05-08 17:07 0问题简述: 在权力阳光项目中使用Ext技术对html页 ...
相关推荐
用ssh+acegi+ajax开发的网上在线人才招聘系统,可以用在各个企业或单位中进行人才招聘管理,同时此系统可以进行在线考试,如果下载后不会运行,可以在线联系我 qq:642706101
在本文中,我们将深入探讨Acegi如何解决权限问题,并通过分析提供的代码、文档和配置文件,来理解其实现机制。 首先,Acegi的核心功能是提供细粒度的访问控制,允许开发者对应用中的资源(如URL、方法、对象等)...
SSH + AJAX + Acegi 是一个基于Java技术栈的Web应用开发框架组合,广泛应用于企业级应用的构建。SSH指的是Spring、Struts和Hibernate三个开源框架的首字母缩写,而Acegi则是Spring Security的前身,负责处理应用的...
- **会话管理(Session Management)**: Acegi 可以监控和管理用户的会话,防止会话劫持、会话固定等安全问题。 - **过滤器链(Filter Chain)**:Acegi 使用过滤器链来拦截请求,执行安全检查,这是其实现安全...
3. **会话管理(Session Management)**:Acegi可以监控和管理用户的会话,防止会话固定攻击(Session Fixation)和会话超时。它还支持多因素认证,如结合硬件令牌增强安全性。 4. **过滤器链(Filter Chain)**:...
尽管Acegi Security是Spring早期的安全解决方案,但它提供了一套全面的工具,对于理解Spring Security(Acegi的现代替代品)的工作原理非常有帮助。在实际项目中,现在通常推荐使用Spring Security,因为它拥有更...
5. **缓存**:Acegi可以集成缓存机制,如 EhCache 或者其他的缓存解决方案,以提高性能,减少对数据库的频繁访问。例如,它可能缓存已验证的用户信息,避免每次请求都进行数据库查询。 6. **Session有效时间**:...
Acegi Security是一个专门为Spring框架设计的权限控制框架,旨在为基于J2EE的企业级应用程序提供全面的安全服务。...因此,Acegi Security成为了许多Spring开发者在实现应用程序安全控制时的首选框架。
Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全...
3. **会话管理(Session Management)**:Acegi提供了会话管理功能,可以防止会话固定攻击(Session Fixation),并支持会话超时和并发会话控制。 4. **过滤器安全链(Filter Security Interceptor)**:Acegi的...
尽管现在Spring Security已经成为更推荐的安全解决方案,但Acegi在早期对Spring应用的安全支持起到了重要作用,其设计理念和实现方式在Spring Security中得到了继承和发展。 总的来说,Acegi Security(Spring ...
Acegi 是一个强大的 Java 安全框架,专用于系统安全编程,尤其在处理认证和授权方面表现出色。在本文中,我们将深入探讨 Acegi 的基本...无论是处理简单的认证还是复杂的授权需求,Acegi 都能提供一套完整的解决方案。
Acegi Security System for Spring(简称Acegi)是Spring框架的一个扩展,它为Spring应用程序提供了全面的安全管理解决方案。...同时,不断学习和理解Acegi的原理,有助于更好地解决实际开发中的安全问题。
标题 "springside 玩转acegi" 涉及到的是SpringSide项目中对Acegi安全框架的使用,Acegi是Spring早期的一个安全模块,后来被Spring Security所取代。Acegi提供了一套全面的Java安全解决方案,包括认证、授权、会话...
Acegi Security(现已被Spring Security替代)是一个功能强大的安全框架,它主要解决了认证(Authentication)和授权(Authorization)这两个核心的安全问题。 首先,让我们理解认证和授权的基本概念: - **认证**...
如果你手头有Acegi的详细文档,如acegi.docx和Acegi.zip中的内容,这将是一个宝贵的资源,帮助你深入理解和解决问题。 总结起来,Spring Acegi是一个强大的安全框架,它的功能包括用户认证、权限控制和安全拦截。...
《Acegi Security 1.0.7:Spring框架的安全认证组件深度解析》 Acegi Security是Spring框架的一个扩展,专为Java企业级应用提供安全认证和授权服务。它在Spring框架的基础上构建了一套完整的安全解决方案,使开发者...
它不仅适用于 Web 应用的保护,还能在服务层面上确保方法调用的安全性,这使得 Acegi 成为一个灵活且全面的安全解决方案,适合于各种基于 Spring 的企业级应用。通过使用 Acegi,开发者可以专注于业务逻辑,而无需...