首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Acegi 實戰入門:Web 專案配置關鍵點全解析

     編輯:Java 相關知識

本文以一個可直接在 Eclipse 3.4 運行的最小化 Web 專案為例,逐層剖析 web.xml 與 applicationContext-acegi-security.xml 的關鍵配置點。

一、web.xml 核心元素

<web-app>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext-acegi-security.xml</param-value>
    </context-param>

    <filter>
        <filter-name>Acegi Filter</filter-name>
        <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
        <init-param>
            <param-name>targetClass</param-name>
            <param-value>org.acegisecurity.util.FilterChainProxy</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>Acegi Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>

關鍵點:

  • FilterToBeanProxy:標準 Servlet Filter,啟動時從 Spring 容器取得 FilterChainProxy 實例,將所有請求委派給它。
  • targetClass:指定代理的 Bean 類別,極少需修改。
  • ContextLoaderListener:啟動 Spring 根容器,載入 Acegi 配置檔。

二、applicationContext-acegi-security.xml 核心

<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
    <property name="filterInvocationDefinitionSource">
        <value>
            CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
            PATTERN_TYPE_APACHE_ANT
            /login.jsp=#NONE#
            /**=httpSessionContextIntegrationFilter,
               authenticationProcessingFilter,
               exceptionTranslationFilter,
               filterInvocationInterceptor
        </value>
    </property>
</bean>

filterInvocationDefinitionSource 字串由 Spring PropertyEditor 自動轉為 FilterInvocationDefinitionSource 介面實現 (通常為 PathBasedFilterInvocationDefinitionMap)。

三、四大 Filter 職責

Bean ID類別職責
httpSessionContextIntegrationFilterHttpSessionContextIntegrationFilterSession ↔ SecurityContext 同步
authenticationProcessingFilterAuthenticationProcessingFilter處理登入表單驗證
exceptionTranslationFilterExceptionTranslationFilter捕獲安全異常,轉為 HTTP 回應
filterInvocationInterceptorFilterSecurityInterceptorURL 權限決策

四、七劍如何串接

後續文章將詳細說明每個 Filter 內部如何調用「七劍」完成具體邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved