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

这些天有点懒散, 想的也得振作一下吧. 从最好容易的部分下手, 这样想到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内部是怎么转化的? 这是个大话题, 先不再下钻了.

时间: 2025-01-20 05:27:19

Acegi(七):LogoutFilter配置及几个问题的相关文章

测试并发应用(七)配置Eclipse来调试并发代码

声明:本文是< Java 7 Concurrency Cookbook>的第八章, 作者: Javier Fernández González 译者:郑玉婷 校对:方腾飞 配置Eclipse来调试并发代码 当今,几乎全部的程序员,不管使用什么程序语言,都会用IDE来创建应用.在相同的应用里,他们提供了很多有趣的功能来整合,例如: 任务管理 自动生成代码 自动生成文档 与版本控制系统集成 debugger测试应用 创建不同类型的应用和项目 IDE最有用的特点其一就是debugger.你可以一步一

springcloud(七):配置中心svn示例和refresh

上一篇springcloud(六):配置中心git示例留了一个小问题,当重新修改配置文件提交后,客户端获取的仍然是修改前的信息,这个问题我们先放下,待会再讲.国内很多公司都使用的svn来做代码的版本控制,我们先介绍以下如何使用svn+Spring Cloud Config来做配置中心. svn版本 同样先示例server端的代码,基本步骤一样. 1.添加依赖 <dependencies> <dependency> <groupId>org.springframework

基于Hyper-V 3.0搭建XenDesktop 7(七) 配置XenDesktop 7

用域管理员登陆DDC1,从开始菜单找到"Citrix Studio"控制台,并打开 点击"入门!创建一个站点" 输入站点名称 输入数据库的位置以及数据库名称,此处我们使用了Express数据库,生产环境建议使用多台SQL Server做Mirror 点击"是"开始创建数据库 选择许可证服务器

Cisco路由器的ADSL modem配置

 路由器接入ADSL配置详解  1.Cisco路由器连接ADSL modem的PPPoE配置: 说明:此案例为北京电信adsl PPPoE接入,需要使用一个普通adsl modem和一台cisco 2500路由器(双以太口),IOS 12.2(15)T,能够实现局域网共享上网.  此案例配置共分7步:  第一步:配置vpdn vpdn e  1.Cisco路由器连接ADSL modem的PPPoE配置: 说明:此案例为北京电信adsl PPPoE接入,需要使用一个普通adsl modem和一台c

Windows 7下IIS7的安装及ASP配置

  在Windows 7下面IIS7的安装方法: 一.进入Windows 7的 控制面板,选择左侧的 打开或关闭Windows功能 . 三.安装完成后,再次进入 控制面板,选择 管理工具,双击 Internet(IIS)管理器 选项,进入IIS设置. 四.现在进入到IIS7控制面板. 五.选择 Default Web Site,并双击 ASP 的选项, 六.IIS7中ASP 父路径 是没有启用的,要 开启父路径,选择True,搞定父路径选项. 七.配置IIS7的站点. 单击右边的 高级设置 选项

springcloud(九):配置中心和消息总线(配置中心终结版)

我们在springcloud(七):配置中心svn示例和refresh中讲到,如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用webhook的机制每次提交代码发送请求来刷新客户端,当客户端越来越多的时候,需要每个客户端都执行一遍,这种方案就不太适合了.使用Spring Cloud Bus可以完美解决这一问题. Spring Cloud Bus Spring cloud bus通过轻量消息代理连接各个分布的节点.这会用在广播状态的变化(例如配置变化)或者其他的消息指令.Spr

windows7中iis安装和配置图文教程

一.进入Win7的 控制面板,选择左侧的 打开或关闭Windows功能 . 二.现在出现了安装Windows功能的选项菜单,注意选择的项目,我们需要手动选择需要的功能,下面这张图片把需要安装的服务都已经选择了,大家可以按照图片勾选功能. 三.安装完成后,再次进入 控制面板,选择 管理工具,双击 Internet(IIS)管理器 选项,进入IIS设置. 四.现在进入到IIS7控制面板. 五.选择 Default Web Site,并双击 ASP 的选项. 六.IIS7中ASP 父路径 是没有启用的

1、solr包结构介绍,solrCore的安装配置,solr部署到Tomcat,多solrCore配置,配置中文分词器,界面功能介绍,Schema.xml的基本使用,数据导入

一.下载solr,下载地址是:http://archive.apache.org/dist/lucene/solr/,选择自己想要的solr的版本,本项目使用的版本是4.10.3 二.如果想下载Lucene,下载地址是: https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/java/ 三.其中solr-4.10.3的包结构如下: bin solr的脚本 contrib solr为了增强自身的功能,所添加的扩展依赖包 dist Solr  buil

Linux下配置Shadowsocks服务器的步骤详解

说明: Shadowsocks是一个轻量级的socks5代理软件, 而hadowsocks-libev是一个基于shadowsocks 协议的socks5代理软件, 相比原版,hadowsocks-libev程序体积小.高并发.资源占用更少.跨平台.完全兼容shadowsocks协议. hadowsocks-libev包括三个模块: ss-server:服务器端,部署在远程服务器,提供shadowsocks服务. ss-local:客户端,提供本地socks5协议代理. ss-redir:客户端