发布一篇Acegi(十):securityContextHolderAwareRequestFilter结
关于第二点:俺问问你,如果是企业级项目的话,诸如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()方法不能获取对象的名字。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 是一种使用者不需花费很多时间学习的语言 是一种使网页(Web Page)产生生动活泼画面的语言 是一种使用者不需花费很多时间学习的语言 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 Java是一种计算机编程语言,拥有跨平台、面向对java 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
页:
[1]