Acegi(七):LogoutFilter设置及几个问题
当前位置:以往代写 > JAVA 教程 >Acegi(七):LogoutFilter设置及几个问题
2019-06-14

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

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内部是怎么转化的? 这是个假话题, 先不再下钻了.

    关键字:

在线提交作业