|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。
在Acegi(八)和Acegi(九)里,我们对securityContextHolderAwareRequestFilter有了个较为周全的分析.在这篇做个小结,也把一些漏落补上.
在上两篇里,我们实践上是先容了三个类:SecurityContextHolderAwareRequestFilter、SecurityContextHolderAwareRequestWrapper和SavedRequestAwareWrapper(及由些想到的SavedRequest).如今我们回过火再看时,对它们之间也有了个更苏醒的了熟悉:Acegi经由过程这个SecurityContextHolderAwareRequestFilter把Request给Wrap下,而这个wrapper就是SecurityContextHolderAwareRequestWrapper或SavedRequestAwareWrapper.SavedRequestAwareWrapper承继自SecurityContextHolderAwareRequestWrapper类.
我们再看在Acegi(八)设置,
Xml代码
<beanid="securityContextHolderAwareRequestFilter"
class="org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter"/>
经由过程这个设置,securityContextHolderAwareRequestFilter实践上用SavedRequestAwareWrapper来包装Acegi拦阻上去的Request.这是怎样回事?设置中没表现出来呀.看源码,发明本来SavedRequestAwareWrapper是经由过程"ClasswrapperClass=SavedRequestAwareWrapper.class;"这个属性写逝世的.如许默许情形下,securityContextHolderAwareRequestFilter就能够间接用了.那怎样换呢?有一个办法setWrapperClass,经由过程它能够交换事实用哪一个wrapper了.(这里又有一个成绩了,在Spring的设置文件中,用property标签设置wrapperClass时,value里应当是一个String范例的,那怎样转成Class范例的呢?).
再看securityContextHolderAwareRequestFilter类的文档,发明,我们能够来本人的完成类来设置wrapperClass.那自已定制的类又有甚么特别的请求呢?有,本人定制的类就是要有一个大众的机关办法,这个大众办法得承受两个参数:HttpServletRequest和PortResolver.固然定制的类是要承继HttpServletRequestWrapper类或完成HttpServletRequest接口.
-------------------------------
至此,对securityContextHolderAwareRequestFilter先容告一段落了.上面说下在此过程当中发明的一个Filter,即HttpRequestIntegrationFilter.看名字仿佛能看出点甚么来,文档先容是如许的:"PopulatesSecurityContextwiththeAuthenticationobtainedfromthecontainersHttpServletRequest.getUserPrincipal()".也就是说经由过程这个filter把Web(或使用服务器)容器里传来的Security信息传给Acegi放到SecurityContext中.
经由过程这个Filter,Acegi能够跟Java里的尺度JAAS分离,或像Tomcat本身的Security办理信息?还没见过,今后寄望.
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。 |
|