一. 使用默认过滤器配置 springboot
1. 启动类上 加 @EnableCasClient 开启casclient 客户端
2.properties加如下配置
#cas 配置
cas.server-url-prefix=http\://192.168.1.232\:80
cas.server-login-url=http\://192.168.1.232\:80/cas/login
cas.client-host-url=http\://192.168.1.232\:20002
cas.validation-type=CAS
配置好后会使用默认过滤器,逻辑没有登陆打回到登录界面
逻辑参考
cas官网.
或者
此博文
二. cas 过滤器重写
1.背景
默认过滤器满足不了需求。如,现在vue前端使用axios 发送axios.defaults.headers[‘Content-Type’] = ‘application/json;charset=UTF-8’; 类型的请求,前会发送预请求,即options请求。然而此时不带cookie,会导致,请求被拦截,network查看 。请求的response 的 location会显示登录地址,即重定向到登录地址。此时需要重写过滤器,放过options请求。
2. 不使用 @EnableCasClient(注意)
properties配置可以保留,后面@value引入到对应位置使用。
3. 使用配置类
package com.gridknow.produceserver.config;
/**
* @version 1.0
* @ClassName CasConfigure
* @Description TODO
* @Author 张新成
* @Date 2020/9/1 16:52
*/
import com.gridknow.produceserver.Filter.CasFilter;
import net.unicon.cas.client.configuration.CasClientConfigurerAdapter;
import net.unicon.cas.client.configuration.EnableCasClient;
import org.jasig.cas.client.authentication.AuthenticationFilter;
import org.jasig.cas.client.util.AssertionThreadLocalFilter;
import org.jasig.cas.client.util.HttpServletRequestWrapperFilter;
import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Configuration
@Component
public class CasConfigure extends CasClientConfigurerAdapter {
@Bean
public FilterRegistrationBean authenticationFilterRegistrationBean() {
FilterRegistrationBean authenticationFilter = new FilterRegistrationBean();
authenticationFilter.setFilter(new CasFilter());
Map<String, String> initParameters = new HashMap<String, String>();
initParameters.put("casServerLoginUrl", "http://192.168.1.232:80/cas/login");
initParameters.put("serverName", "http://192.168.1.232:20002");
authenticationFilter.setInitParameters(initParameters);
authenticationFilter.setOrder(1);
List<String> urlPatterns = new ArrayList<>();
urlPatterns.add("/*");// 设置匹配的url
authenticationFilter.setUrlPatterns(urlPatterns);
return authenticationFilter;
}
@Bean
public FilterRegistrationBean ValidationFilterRegistrationBean(){
FilterRegistrationBean authenticationFilter = new FilterRegistrationBean();
authenticationFilter.setFilter(new