Shiro的FilterChainManager 接口說明

FilterChainManager 接口代碼如下:

public interface FilterChainManager {
    // 得到註冊的攔截器
    Map<String, Filter> getFilters();
       // 獲取攔截器鏈
    NamedFilterList getChain(String chainName);
    // 是否有攔截器鏈
    boolean hasChains();
    // 得到所有攔截器鏈的名字
    Set<String> getChainNames();
    // 使用指定的攔截器鏈代理原始攔截器鏈
    FilterChain proxy(FilterChain original, String chainName);
    // 註冊攔截器
    void addFilter(String name, Filter filter);
    // 註冊攔截器
    void addFilter(String name, Filter filter, boolean init);
    // 根據攔截器鏈定義創建攔截器鏈
    void createChain(String chainName, String chainDefinition);
    // 添加攔截器到指定的攔截器鏈
    void addToChain(String chainName, String filterName);
    // 添加攔截器(帶有配置的)到指定的攔截器鏈
    void addToChain(String chainName, String filterName, String chainSpecificFilterConfig) throws ConfigurationException;
}

此接口主要三個功能:註冊攔截器,註冊攔截器鏈,對原始攔截器鏈生成代理之後的攔截器鏈。

針對下面配置,對該接口進行說明

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
    <!-- 注入安全管理器-->
    <property name="securityManager" ref="securityManager"/>
    <!-- 設置登錄URL-->
    <property name="loginUrl" value="/login"/>
    <property name="filters">
        <util:map>
            <!-- 註冊authc、sysUser、kickout-->
            <entry key="authc" value-ref="formAuthenticationFilter"/>
            <entry key="sysUser" value-ref="sysUserFilter"/>
            <entry key="kickout" value-ref="kickoutSessionControlFilter"/>
        </util:map>
    </property>
    <property name="filterChainDefinitions">
        <!-- 此處配置除了登錄等之外的地址都走 kickout 攔截器進行併發登錄控制-->
        <value>
            /login = authc
            /logout = logout
            /authenticated = authc
            /** = kickout,user,sysUser
        </value>
    </property>
</bean>

filters 屬性定義了攔截器。

filterChainDefinitions 定義了攔截器鏈。

如 /** 就是攔截器鏈的名字,而 kickout,user,sysUser 就是攔截器名字列表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章