好男人天堂网,久久精品国产这里是免费,国产精品成人一区二区,男人天堂网2021,男人的天堂在线观看,丁香六月综合激情

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > acegi參考手冊(v1.0.4)[譯]-第三章 協助系統

acegi參考手冊(v1.0.4)[譯]-第三章 協助系統
2010-01-13 23:23:37  作者:  來源:

第三章. 協助系統

本章介紹一些Acegi Security使用的附加和協助系統。那些和安全無關,但是包含在Acegi Security項目中的部分,將會在本章中討論

3.1. 本地化

Acegi Security支持對終端客戶可能會看到的異常信息進行本地化。如果你的應用是為英文用戶設計的,那么你什么都不用做,因為Acegi Security的所有消息默認都是英文的。如果你要支持其他區域用戶,那么本節包含了你所需要了解的所有東西。

包括認證失敗或者訪問被拒絕(授權失。┑乃挟惓O⒍伎梢员槐镜鼗。提供給開發者或者系統部署人員的異常或者日志信息(包括錯誤的屬性、接口不符、構造器錯誤、debug級日志)沒有被本地化,它們硬編碼在Acegi Security的代碼中。

在acegi-security-xx.jar(譯注:xx代表版本號)的org.acegisecurity包中包含了一個 messages.properties文件。這個文件會被你的application context引用,因為Acegi Security實現了Spring的MessageSourceAware接口,它期待在application context啟動的時候注入一個message resolver。通常你所需要做的是在你的application context中注冊一個引用這個消息的bean,如下所示:

xml 代碼
 
  1. <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">  
  2.     <property name="basename"><value>org/acegisecurity/messagesvalue>property>  
  3. bean>  

messages.properties是按照資源包標準命名的,它代表了Acegi Securtiy支持的默認語言。文件默認是英文的。如果你不注冊一個消息源,Acegi Security仍然可以正常工作,它會用回硬編碼的英文消息。

如果你想定制messages.properties文件,或者支持其他語言,那么你應該copy這個文件,然后重命名,并在上述的bean定義中 注冊。因為文件中的key并不多,因此本地化花不了多少工夫。如果你針對消息文件進行了本地化,那么請和社區分享,你可以添加一個JIRA任務,將你正確 命名的messages.properties本地化文件作為附件添加。

為了完善關于本地化的討論需要知道Spring的ThreadLocal org.springframework.context.i18n.LocaleContextHolder。你應該為每個用戶設置代表他區域的 LocaleContextHolder。Acegi Security會嘗試從這個ThreadLocal中獲取的Locale來從消息源中獲取消息。請參考Spring的文檔以獲取更多使用 LocaleContextHolder和能夠幫你自動設置它的輔助類(例如

AcceptHeaderLocaleResolver, CookieLocaleResolver, FixedLocaleResolver, SessionLocaleResolver 等)的詳細信息。

3.2. Filters

正如你在整個手冊中看到的那樣,Acegi Security使用很多filter。你可以使用FilterToBeanProxy或者FilterChainProxy來確定這些是怎樣加入到你的web應用中的,下面我們來看看。

大部分filter使用FilterToBeanProxy來配置。例如下面web.xml中配置所示:

xml 代碼
 
  1. <filter>  
  2.     <filter-name>Acegi HTTP Request Security Filter</filter-name>  
  3.     <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>  
  4.     <init-param>  
  5.         <param-name>targetClass</param-name>  
  6.         <param-value>org.acegisecurity.ClassThatImplementsFilter</param-value>  
  7.     </init-param>  
  8. </filter>  

注意在web.xml中的filter實際上是一個FilterToBeanProxy,而不是真正實現filter邏輯的filter。 FilterToBeanProxy所作的是代理Filter的方法到一個從Spring的application context 獲取的bean。這使得這個bean可以享受Spring application context的生命周期支持以及配置靈活性。這個bean必須實現javax.servlet.Filter。

FilterToBeanProxy只需要一個簡單的初始化參數,targetClass或者targetBean。targetClass會定位 application context中指定的類的第一個對象,而FilterToBeanProxy按照bean的名字定位對象。象標準的Spring web應用一樣,FilterToBeanProxy使用 WebApplicationContextUtils.getWebApplicationContext(ServletContext)來訪問 application context,所以你應該在web.xml中配置一個ContextLoaderListener。

 

在IoC容器而不是servlet容器中部署Filter會有一個生命周期的問題。特別是,哪個容器應該負責調用Filter的"startup" 和 "shutdown"方法?注意到Filter的初始化和析構順序隨servlet容器不同而不同,如果一個Filter依賴于由另一個更早初始化的 Filter的配置,這樣就會出現問題。另一方面,Spring IoC具備更加完善的生命周期/IoC接口(例如InitializingBean, DisposableBean, BeanNameAware, ApplicationContextAware以及其他許多)以及一個容易理解的接口契約(interface contract),可預見的方法調用順序,自動裝配支持,以及可以避免實現Spring接口的選項(例如Spring XML中的destroy-method 屬性)。因此,我們推薦盡可能使用Spring生命周期服務而不是servlet容器生命周期服務。FilterToBeanProxy默認不會將 init(FilterConfig) 和 destroy()方法委派到被代理的bean。如果你需要這些調用被委派,那么將lifecycle初始化參數設置為servlet- container-managed。

我們強烈推薦你使用FilterChainProxy而不是FilterToBeanProxy。雖然FilterToBeanProxy是一個非 常有用的類FilterToBeanProxy,問題是當web.xml中filter變多時,項就會太多而變得臃腫不堪。為了解決這個問題,Acegi Security提供一個FilterChainProxy類。它在FilterToBeanProxy中被裝配(正如上面例子中所示),但目標類 (target class)是org.acegisecurity.util.FilterChainProxy。這樣過濾器鏈(filter chain)可以在application context中按照如下代碼配置:

xml 代碼
 
  1. <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">  
  2.     <property name="filterInvocationDefinitionSource">  
  3.         <value>  
  4.             CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON  
  5.             PATTERN_TYPE_APACHE_ANT  
  6.             /webServices/*=httpSessionContextIntegrationFilterWithASCFalse,basicProcessingFilter,exceptionTranslationFilter,  
  7.             /*=httpSessionContextIntegrationFilterWithASCTrue,authenticationProcessingFilter,exceptionTranslationFilter,filterSecurityInterceptor  
  8.         value>  
  9.     property>  
  10. bean>  
   

你可能注意到FilterSecurityInterceptor定義方式的相似之處。同時支持正則表達式和Ant Paths格式,越對應的URI越早出現。在運行時,FilterChainProxy會定位符合當前的web請求的第一個URI模式。每個對應的配置屬 性代表了在application context中定義的一個bean的名字。接著fiter會按照它們被指定的順序,按照FilterChain的標準行為模式被調用(如果一個 Filter決定停止處理,它可以不在chain中執行)。

如你所見,FilterChainProxy需要為不同的請求模式重復配置filter的名字(在上面的例子中,, exceptionTranslationFilter 和 filterSecurityInterceptor 是重復的)。這樣的設計是為了讓FilterChainProxy能夠為不同的URI配置不同的filter調用順序,同時也提高了表達力(針對正則表達 式、Ant Paths、以及任何FilterInvocationDefinitionSource的特定實現)和清晰度,可以知道是哪個filter應該被調用。

你可能注意到了我們在filter chain定義了兩個HttpSessionContextIntegrationFilter (ASC是allowSessionCreation的縮寫,是HttpSessionContextIntegrationFilter的一個屬性)。 因為web服務不會為將來的請求提供一個jsessionid,為這樣的用戶創建HttpSessions是浪費的。如果你有一個需要最大限度的伸縮性的 高容量的應用,我們建議你使用上述的方法。對于小的應用,使用單一的HttpSessionContextIntegrationFilter (默認的allowSessionCreation設為true)應該足夠了。

說到生命周期問題,如果對FilterChainProxy自身調用init(FilterConfig) 和 destroy()方法,它會把它代理到底層的filter。這樣FilterChainProxy保證只初始化和析構每個filter一次,不論它在 FilterInvocationDefinitionSource中定義了多少次。你可以通過FilterToBeanProxy的lifecycle 初始化參數來控制這些方法是否被調用。如上面所討論的那樣,默認所有servlet容器生命周期調用是不被代理到FilterChainProxy的。

在web.xml中定義的filter的順序是非常重要的。不管你實際用到哪個filter,的順序應該是如下所示的:

1.ChannelProcessingFilter,因為可能要重定向到另一種協議。

2.ConcurrentSessionFilter 因為不使用任何SecurityContextHolder的功能,但是需要更新SessionRegistry來表示當前的發送請求的principal。

3. HttpSessionContextIntegrationFilter, 這樣當一個web請求開始的時候就可以在SecurityContextHolder中設置一個SecurityContext,當web請求結束的時候 任何對SecurityContext的改動都會被copy到HttpSession(以備下一個web請求使用)。

4.Authentication processing mechanisms - AuthenticationProcessingFilter, CasProcessingFilter, BasicProcessingFilter, HttpRequestIntegrationFilter, JbossIntegrationFilter 等 - 修改SecurityContextHolder,使其中包含一個有效的認證請求令牌(token)。

5.SecurityContextHolderAwareRequestFilter, 如果你使用它來在你的servlet容器中安裝一個Acegi Security aware HttpServletRequestWrapper。

6.RememberMeProcessingFilter, 如果早期的認證處理過程沒有更新SecurityContextHolder,并且請求(request)提供了一個cookie啟用remember- me服務,一個合適的被記住的Authentication對象會被放到SecurityContextHolder那里。

7.AnonymousProcessingFilter, 如果早期的認證處理過程沒有更新SecurityContextHolder,, 一個匿名Authentication 對象會被放到SecurityContextHolder那里。

8.ExceptionTranslationFilter, 捕獲所有的Acegi Security 異常,這樣要么返回一個HTTP錯誤響應或者加載一個對應的AuthenticationEntryPoint。

9.FilterSecurityInterceptor, 保護 web URIs

所有上述的filter使用FilterToBeanProxy或FilterChainProxy。建議在一個應用中使用一個單個的 FilterToBeanProxy代理到一個單個的FilterChainProxy。,在FilterChainProxy中定義所有的Acegi Security Filters。如果你使用SiteMesh,確保Acegi Security filters 在 SiteMesh filters調用前調用。這樣使SecurityContextHolder在SiteMesh decorator使用前能夠及時被裝配。


安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
高清一级做a爱过程不卡视频| 精品久久久久久免费影院| 国产一级生活片| 一级片片| 黄视频网站在线免费观看| 欧美日本韩国| 欧美激情一区二区三区在线播放| 久久精品店| 黄色福利片| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 91麻豆高清国产在线播放| 日本伦理片网站| 一a一级片| 亚洲天堂免费观看| 成人高清护士在线播放| 日韩专区亚洲综合久久| 99热精品一区| 高清一级片| 久久国产影视免费精品| 日韩中文字幕一区二区不卡| 久草免费在线视频| 91麻豆精品国产综合久久久| 91麻豆精品国产综合久久久| 日本免费乱人伦在线观看| 国产一区二区精品久| 亚洲第一视频在线播放| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 麻豆系列国产剧在线观看| 成人免费观看网欧美片| 欧美激情一区二区三区在线 | 日韩中文字幕一区二区不卡| 天天色色色| 免费的黄色小视频| 精品国产香蕉伊思人在线又爽又黄| 国产亚洲精品aaa大片| 黄视频网站免费看| 免费的黄视频| 成人免费网站久久久| 高清一级做a爱过程不卡视频| 成人免费高清视频| 日本乱中文字幕系列| 精品视频一区二区三区| 欧美另类videosbestsex视频| 久草免费在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 一级女性大黄生活片免费| 国产91精品露脸国语对白| 黄视频网站免费| 九九精品在线播放| 一本伊大人香蕉高清在线观看| 亚洲 男人 天堂| 成人a大片高清在线观看| 二级特黄绝大片免费视频大片| 97视频免费在线| 国产成人精品在线| 久草免费在线视频| 日韩专区在线播放| 欧美另类videosbestsex视频| a级精品九九九大片免费看| 黄视频网站在线免费观看| 国产不卡在线看| 亚飞与亚基在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产一区免费在线观看| 午夜激情视频在线播放| 国产视频一区二区在线播放| 日韩免费片| 精品在线观看国产| 99久久视频| 999精品视频在线| 中文字幕一区二区三区精彩视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久草免费在线色站| 天天色色色| 国产91丝袜在线播放0| 精品国产一区二区三区久| 91麻豆爱豆果冻天美星空| 日韩av片免费播放| 国产精品1024永久免费视频| 国产成人啪精品| 国产视频久久久| 国产视频一区二区在线播放| 国产麻豆精品hdvideoss| 韩国毛片基地| 亚洲第一视频在线播放| 日韩中文字幕在线亚洲一区| 日韩字幕在线| 国产精品自拍亚洲| 可以在线看黄的网站| 一级毛片视频免费| 91麻豆国产| 久久国产精品自线拍免费| 日韩一级黄色片| 精品视频在线观看一区二区 | 国产伦理精品| 日韩中文字幕在线播放| 成人高清视频免费观看| 成人av在线播放| 亚洲 欧美 91| 国产高清视频免费观看| 精品视频在线看| 亚洲精品久久玖玖玖玖| 日韩在线观看视频黄| 精品久久久久久中文字幕一区 | 国产精品自拍亚洲| 精品视频在线观看一区二区| 日韩免费在线观看视频| 天天做人人爱夜夜爽2020毛片| 欧美爱爱网| 日本免费看视频| 国产91精品露脸国语对白| 亚洲第一视频在线播放| 国产91精品系列在线观看| 国产91精品一区| 久久成人综合网| 亚洲 激情| 国产精品自拍在线观看| 夜夜操天天爽| 亚欧成人乱码一区二区| 国产一区二区精品久久91| 国产91素人搭讪系列天堂| 亚飞与亚基在线观看| 999久久66久6只有精品| 精品视频一区二区| 日韩专区亚洲综合久久| 午夜激情视频在线播放| 你懂的福利视频| 精品美女| 国产一区二区精品久久91| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产精品自拍亚洲| 尤物视频网站在线观看| 九九免费高清在线观看视频| 欧美国产日韩久久久| 国产网站在线| 国产视频一区在线| 精品久久久久久中文字幕一区 | 日本乱中文字幕系列| 欧美日本二区| 欧美激情影院| 一级女性全黄生活片免费| 色综合久久天天综合| 欧美激情一区二区三区中文字幕| 精品久久久久久影院免费| 可以免费看毛片的网站| 成人免费网站视频ww| 日韩欧美一二三区| 精品视频在线看| 二级片在线观看| 美女被草网站| 国产一区二区精品| a级精品九九九大片免费看| 黄视频网站在线免费观看| 九九久久99| 欧美另类videosbestsex久久| 日韩一级黄色片| 国产视频一区二区三区四区 | 日韩在线观看视频免费| 国产成人精品综合在线| 免费一级生活片| 亚欧视频在线| a级毛片免费全部播放| 亚洲天堂在线播放| 久久99中文字幕| 欧美激情伊人| 久久国产一久久高清| 99久久视频| 国产国语在线播放视频| 精品视频在线看| 精品国产三级a| 精品毛片视频| 精品国产三级a| 国产高清视频免费| 国产一区二区精品在线观看| 欧美激情伊人| 欧美激情在线精品video| 日韩欧美一及在线播放| 青青久在线视频| 久草免费在线视频| 欧美激情一区二区三区在线| 亚洲 激情| 韩国三级香港三级日本三级| 999精品在线| 亚洲天堂在线播放| 国产视频一区二区在线播放| 国产国语对白一级毛片| 亚洲精品中文一区不卡| 成人av在线播放| 日本在线www| 欧美国产日韩一区二区三区| 精品国产亚洲人成在线| 国产成人欧美一区二区三区的| 99久久精品国产麻豆| 麻豆系列国产剧在线观看| 二级片在线观看| 成人a大片在线观看| 成人免费高清视频| 欧美激情一区二区三区在线| 一级毛片看真人在线视频| 久久福利影视|