快速业务通道

Acegi(七):LogoutFilter配置及几个问题 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

Acegi(七):LogoutFilter配置及几个问题

时间:2009-12-13 javaeye rmn190

这些天有点懒散, 想的也得振作一下吧. 从最好容易的部分下手, 这样想到Acegi.前段时间的博客里写了acegi的最简单配置, 以及围绕这些简单配置的一点点源码层面的钻研. 而实际项目中的配置光这些是不够的, 比如说用户信息及权限还有系统的访问权限都是要放到数据库里的, 这样在做用户登录与权限认证时就要hit数据库了, 这方面的配置又怎样呢?

不过这篇博客中打算写与数据库扩展相关的话题, 而是先从较为简单的几个Filter开刀.

先看LogoutFilter.

配置很简单.

1, 先配置一个id为 logoutFilter的Bean, 如下所示:

<bean id="logoutFilter"        class="org.acegisecurity.ui.logout.LogoutFilter"> <constructor-arg value="/login.jsp" /> <constructor-arg> <list> <bean class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler" /> </list> </constructor-arg> </bean>

2, 把配置好的 logoutFilter加到 filterInvocationDefinitionSource中去, 即改为 "/**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor".

3, 在JSP中适当的位置加上 <a href="/myOwnAcegi/j_acegi_logout">退出</a>

几点说明, 这个的配置很简单的也多少要说有:

1, <constructor-arg value="/login.jsp" />的作用, 用来告诉Acegi当系统退出后跳转到的链接.

2, LogoutFilter构造方法中的第二个参数的作用, 告诉Acegi系统退出后, 都有哪些跟退出相关的action要做.

3, j_acegi_logout的链接, 这个没什么, 跟登录时的" j_acegi_security_check "类似, 都是Acegi自带的, 大多情况下也没什么必要修改.

从追着源码看了它的实现,没什么特殊的, 不过有如下几个不太相关的问题:

1, 有没有必要对这个退出单独配置一个访问时的filterChain, 即另加一个" /j_acegi_logout= httpSessionContextIntegrationFilter, logoutFilter "?如此配置的出发点是这样的,上面配置2种的访问链接在 logoutFilter之后还有三个filter要通过, 执行时间上有些浪费了, 通过这样配置后, 当用户点"退出"时acegi处理完 logoutFilter后就没什么filter要处理了.

再者说, 也不至于让每一个请求都通过一次 logoutFilter,虽说 logoutFilter里有这样一个 requiresLogout判断.

这样的配置里能不能不加 httpSessionContextIntegrationFilter? 为什么要加呢? 不是很清楚.

后边看到" sendRedirect(httpRequest, httpResponse, logoutSuccessUrl); "这样的语句, 原来Acegi通过它就可以让请求链接跳转到

2, LogoutFilter的构造方法有两个参数,String类型的 logoutSuccessUrl和 LogoutHandler[]类型的 handlers. 第一个参数没啥可说的, 第一个参数, 人家要的类型是一个数组, 而Spring里配置时是通过<list>标签来的, Spring内部是怎么转化的? 这是个大话题, 先不再下钻了.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号