SpringBoot集成cas-client 客戶端配置攔截過濾,絕對最簡單有效,親測

我使用的cas-client客戶端爲2.0.0-GA。對於以前使用web.xml進行配置的只需要更改配置文件即可。此文我主要是針對用於SpringBoot集成客戶端的過濾請求講解。

由於最新的cas客戶端只有server-url-prefix ,server-login-url,client-host-url,authentication-url-patterns等幾個配置而取消了原xml中進行配置的ignorePattern、ignoreUrlPatternType配置,所以如果需要配置攔截過濾的話,只需要將ignorePattern、ignoreUrlPatternType兩個參數添加到AuthenticationFilter過濾器中即可。

兩個思路:

1)將ignorePattern、ignoreUrlPatternType兩個參數添加到AuthenticationFilter過濾器中

2)使用authentication-url-patterns配置需要進行攔截的正則表達式請求,那麼剩下的沒有配置的即不進行過濾

下面給出第一種方法的代碼:

package cn.piesat.pieswc.portal.common.config;

import org.jasig.cas.client.authentication.AuthenticationFilter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class CasUrlPatternConfig {

    @Value("${cas.server-login-url}")
    private String casServerLoginUrl;

    @Value("${cas.client-host-url}")
    private String casClientHostUrl;

    @Value("${cas-ignore-pattern}")
    private String casIgnorePattern;

    /**
     * description:授權過濾器
     * ignoreUrlPatternType 使用CAS現成的正則表達式過濾策略
     */
    @Bean
    public FilterRegistrationBean filterAuthenticationRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new AuthenticationFilter());
        registration.addUrlPatterns("/*");

        Map<String,String> initParameters = new HashMap<String, String>();
        initParameters.put("casServerLoginUrl", casServerLoginUrl);
        initParameters.put("serverName", casClientHostUrl);
        //配置文件中設置要過濾攔截的路徑
        initParameters.put("ignorePattern", casIgnorePattern);
        initParameters.put("ignoreUrlPatternType", "org.jasig.cas.client.authentication.RegexUrlPatternMatcherStrategy");
        registration.setInitParameters(initParameters);

        registration.setOrder(1);
        return registration;
    }
}

PS: 再補充一下多個過濾路徑的配置: 不同的路徑只需要用 ()|()處理即可。例如,我需要過濾/app/*以及/file/*下的路徑,則只需要在application文件中配置爲: 

cas-ignore-pattern=(/app/*)|(/file/*)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章