|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。
这些天有点懒惰,想的也得抖擞一下吧.从最好简单的部分动手,如许想到Acegi.前段工夫的博客里写了acegi的最复杂设置,和环绕这些复杂设置的一点点源码层面的研究.而实践项目中的设置光这些是不敷的,好比说用户信息及权限另有体系的会见权限都是要放到数据库里的,如许在做用户登录与权限认证时就要hit数据库了,这方面的设置又如何呢?
不外这篇博客中盘算写与数据库扩大相干的话题,而是先从较为复杂的几个Filter开刀.
先看LogoutFilter.
设置很复杂.
1,先设置一个id为logoutFilter的Bean,以下所示:
<beanid="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter">
<constructor-argvalue="/login.jsp"/>
<constructor-arg>
<list>
<beanclass="org.acegisecurity.ui.logout.SecurityContextLogoutHandler"/>
</list>
</constructor-arg>
</bean>
2,把设置好的logoutFilter加到filterInvocationDefinitionSource中往,即改成"/**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor".
3,在JSP中得当的地位加上<ahref="/myOwnAcegi/j_acegi_logout">加入</a>
几点申明,这个的设置很复杂的也几要说有:
1,<constructor-argvalue="/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外部是怎样转化的?这是个诳言题,先不再下钻了.
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。 |
|