CAS单点登录(Client 客户端) 过滤器重写

一. 使用默认过滤器配置 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 
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值