zoukankan      html  css  js  c++  java
  • 单点登录 CAS 5.* -如何单点退出

    登录已经完成了,如何实现单点退出,即一处退出,处处退出。

    在client增加类

    import org.jasig.cas.client.session.SingleSignOutFilter;
    import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * @Author: L.swallow
     * @Date: 2019/1/14 15:48
     */
    @Configuration
    public class CasConfig {
    
        /**
         * 用于实现单点登出功能
         */
        @Bean
        public ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> singleSignOutHttpSessionListener() {
            ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> listener = new ServletListenerRegistrationBean<>();
            listener.setEnabled(true);
            listener.setListener(new SingleSignOutHttpSessionListener());
            listener.setOrder(1);
            return listener;
        }
    
        /**
         * 该过滤器用于实现单点登出功能
         */
        @Bean
        public FilterRegistrationBean singleSignOutFilter() {
            FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
            filterRegistration.setFilter(new SingleSignOutFilter());
            filterRegistration.setEnabled(true);
            filterRegistration.addUrlPatterns("/*");
            filterRegistration.addInitParameter("casServerUrlPrefix", "http://192.168.10.69:8080/singin");
            filterRegistration.addInitParameter("serverName","SingleSignOutFilter");
            filterRegistration.setOrder(3);
            return filterRegistration;
        }
    
    //    @Bean
    //    @Order(1)
    //    public FilterRegistrationBean logoutFilter(){
    //        FilterRegistrationBean bean= new FilterRegistrationBean();
    //        SingleSignOutFilter filter= new SingleSignOutFilter();
    //        filter.setCasServerUrlPrefix("http://localhost:8080/singin");
    //        bean.setName("SingleSignOutFilter");
    //        bean.setFilter(filter);
    //        return bean;
    //    }
    
    
    }

    修改LoginController

    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import java.security.Principal;
    
    /**
     * @Author: L.swallow
     * @Date: 2019/1/14 14:52
     */
    @RestController
    public class LoginController {
    
        @RequestMapping("login")
        public String login(HttpServletRequest request) {
            Principal principal = request.getUserPrincipal();
            return "Welcome to app1 " + principal.getName()+"<a href="http://192.168.10.69:8080/singin/logout?service=http://192.168.10.69:8081/loginout">
    " +
                    "     退出登录
    " +
                    "</a>";
        }
        @RequestMapping("loginout")
        public String loginout(HttpSession session) {
            session.invalidate();
            return "Login out success";
        }
    
    }
    

      然后在8082子项目选择退出

    刷新 8081子项目

    已成功退出,刷新8082  其实也退出了

    8082退出使用的

    session.invalidate();重置session,
    如若使用的shiro或者springsecret,没啥区别,调用其登出接口就OK
  • 相关阅读:
    记长连接压测总结
    PHP装扩展
    LMbench安装&使用
    Scala学习笔记-2-(if、while、for、try、match)
    Gatling学习笔记-Scenario(场景)
    Java之路---Day05
    Java之路---Day04
    Java之路---Day03
    Java之路---Day02
    Java之路---Day01
  • 原文地址:https://www.cnblogs.com/lewskay/p/10268225.html
Copyright © 2011-2022 走看看