|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。
上篇中我们对securityContextHolderAwareRequestFilter的丰厚多彩有了个别验,最初对这个类的名字也做了一个看文生义的注释.本篇中我们将接着看上篇提到的子类,即SavedRequestAwareWrapper.这个类在父亲的基业上又有甚么新的冲破呢?这得从它的贤浑家提及,即这个子类的属性savedRequest.呵呵,这也恰是组合的优点.
我们看到SavedRequestAwareWrapper类里一切办法的完成都是基于这个贤浑家的匡助.拿我们熟习的getCookies办法来讲,在实行这个办法时,先要看贤浑家的神色:假如savedRequest没甚么话说,才干实行父亲所教授的,即父类的办法super.getCookies();
方才看世界足球的"猖狂的足球",而下面的内容也仅是我的想像,但愿它较为贴切.
上面,我们看这个贤浑家是怎样回事?Ta是何许人也呢?读源码时发明,这个SavedRequest没甚么背景,没有承继,只是完成了Serializable接口.那有甚么用?独自地看这个类是不可了,不外发明这么一条语句:SavedRequestsaved=(SavedRequest)session.getAttribute(AbstractProcessingFilter.ACEGI_SAVED_REQUEST_KEY);这里有一个get,那也应当有"人"set过,岂非说通往发明之路的出口?
经由一段工夫的侦察,终究发明那别有洞天!在形貌这个洞天前,先看这么一个实践例子.
在CSDN网站里下载工具,刚入手下手时我们先找,找到一个一看评价不错,那就下载吧,可点下载按钮时,CSDN网站把我们引到登录页面,噢,本来还没登录呢.很敏捷地填写了登录信息后,点断定,这时候CSDN间接就把方才要下载的工具拿出来了.8错!登录完后,不用再重新找谁人链接了.可这是"8错"是怎样完成的呢?
我们用Acegi里的SavedRequest来形貌下这个功效的完成,固然CSDN纷歧定是用Acegi来完成的,这里只是借用下谁人情形.在点"下载"按钮前,CSDN是同意我们扫瞄的,也就是我们有匿名扫瞄的权限,可当下载时,CSDN发明这团体没有下载的权限,得让Ta登录.因而,CSDN里的平安机制让页面跳转到登录界面,同时,为了用户的利用便利,把用户方才想下载的谁人链接也记了上去,放到了Session中,而我们说的SavedRequest恰是干这个用的.用户登录后,CSDN的平安机制再从Session中掏出方才谁人想下载的链接,因而下载顺遂举行了.
上面分离后面先容的Acegi观点,把这个历程再形貌一遍.方才入手下手用户找工具时用扫瞄的权限,当Ta想下载时,Acegi的FilterSecurityInterceptor在实行beforeInvocation办法时发明以后用户没有响应的权限,因而FilterSecurityInterceptor抛出一个accessDeniedException非常,这个非常在ExceptionTranslationFilter里给catch住了,随后的handleException时,由sendStartAuthentication办法卖力new了一个SavedRequest对象,这个对象里恰是装了方才谁人链接,随后把这个SavedRequest对象放进了Session.因而用户登录,登录妥善后,AbstractProcessingFilter里的successfulAuthentication办法出头经由过程determineTargetUrl办法从session中掏出后面放到session中的SavedRequest对象,最初再交由sendRedirect办法,把用户想要的东东出现在了长远.
说了半天了,SavedRequest抢往了年夜多半的风头,不外也好,把这个SavedRequest研讨透了后,SavedRequestAwareWrapper的功效就不攻自破了.也就是说从汗青地角度看清了SavedRequest对象的前因后果,SavedRequestAwareWrapper对象的如今成绩也就应刃而解了.
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net网页编程性能上肯定会站上风的。 |
|