SpringBoot-CAS单点退出

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:12   2224   0

cas-server默认配置的单点退出并没有做到真正的单点退出(在一个客户端退出时,另一个已经登录的客户端还能访问)。

由于我的项目是springboot,所以就介绍在springboot下怎么设置单点退出。

与spring设置单点退出相类似,cas官网已经内置了此类功能,我们只需要加入一个拦截器与监听器就好。由于刚接触springboot,配置拦截器与监听器用了不少时间。而且在此期间发现FilterRegistrationBean中的setOrder设置拦截器顺序并不起作用,最后只能通过放置顺序控制拦截器的执行顺序。

SingleSignOutFilter拦截器设置,需要是第一个加载的拦截器。

  @Bean
    public SingleSignOutFilter singleSignOutFilter(){
        return new SingleSignOutFilter();
    }

    @Bean
    public FilterRegistrationBean singleSignOutFilterBean(){
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(singleSignOutFilter());
//        filterRegistrationBean.addInitParameter("targetFilterLifecycle","true")
        filterRegistrationBean.setEnabled(true);
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.setOrder(1);
        filterRegistrationBean.setName("singleFilter");
        System.out.println("================================singleFilter执行");
        return filterRegistrationBean;
    }
public SingleSignOutHttpSessionListener singleSignOutHttpSessionListener(){
    return new SingleSignOutHttpSessionListener();
}
@Bean
public ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> singleSignOutHttpSessionListenerBean(){
    ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> listenerRegistrationBean= new ServletListenerRegistrationBean<>();
    listenerRegistrationBean.setEnabled(true);
    listenerRegistrationBean.setListener(singleSignOutHttpSessionListener());
    listenerRegistrationBean.setOrder(3);
    listenerRegistrationBean.setName("singleListener");
    System.out.println("================================singleListener执行");
    return listenerRegistrationBean;
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP