zoukankan      html  css  js  c++  java
  • (二)SSO之CAS框架单点退出,自定义退出界面.

    用CAS的退出,只能使用它自己的那个退出界面,如果有这样的要求, 要求退出后自动跳转到登录界面, 该如何做呢?下面这篇文章实现了退出后可以自定义跳转界面. 
    用了CAS,发现退出真是个麻烦事,退出后跳转到了CAS的注销页面,而且不关闭浏览器的话,其实并没有真的退出,输入地址仍是登陆状态。为了实现退出后登陆到跳转页面,做了以下配置:
     
    1.server 端
     
    修改srcmainwebappWEB-INFcas-servlet.xml里的logoutController
    增加p:followServiceRedirects="true"使支持logout输入service参数为跳转路径。
     
    <bean id="logoutController" class="org.jasig.cas.web.LogoutController"  
    p:centralAuthenticationService-ref="centralAuthenticationService"  
    p:logoutView="casLogoutView"  
    p:warnCookieGenerator-ref="warnCookieGenerator"  
    p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator"   
    p:followServiceRedirects="true"  
    />  

    2.客户端

    web.xml 中在登录的filter之前增加
     
    <!-- 填写退出的URL -->  
      <context-param>  
        <param-name>casServerLogoutUrl</param-name>  
        <param-value>http://10.1.83.34:8080/cas/logout</param-value>  
      </context-param>  
       <!--单点退出配置-->  
        <listener>  
        <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>  
    </listener>   
    <filter>  
       <filter-name>CAS Single Sign Out Filter</filter-name>  
       <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>  
    </filter>  
    <filter-mapping>  
       <filter-name>CAS Single Sign Out Filter</filter-name>  
       <url-pattern>/*</url-pattern>  
    </filter-mapping>  

    在JSP中,如果直接把退出转到cas/logout之后,会跳转到CAS的注销页面,这个情况下,如果直接点击浏览器的回退按钮,发现仍然可以正常操作,也就是session并没有被注销掉,可能CAS的logout只是去掉了TGT吧。

    为了解决这个问题,我只好重新写了个JSP,退出按钮跳转到这个JSP,这个JSP里先注销session, 然后再跳转到CAS的退出,并增加service参数,使跳转到登陆页面。
    <a  
        href="${pageContext.request.contextPath}/web-root/include/logout.jsp" ></a>  
    <div id="box_T5" class="toptaps5">退出登录</div>  

    logout.jsp内容:

    <body>  
    <%  
    session.invalidate();  
    response.sendRedirect(application  
    .getInitParameter("casServerLogoutUrl")  
    + "?service="  
    + application.getInitParameter("serverName") + "/myweb");  
    %>  
    </body>  

    说明:"/myweb"就是你退出后默认转到的界面, application.getInitParameter,需要自己在web.xml中加入context-parameter的配置. 这样才能成功跳转到你退出登录后想要跳转到的界面.

     
    经过测试,可以实现所要的功能。
  • 相关阅读:
    GSON -JSON 反序列化-多节点名称支持
    Jedis 分片原理
    闭锁-CountDownLatch
    XML序列化及反序列化
    用GIT操作SVN
    报表worker-CPU使用率过高原因排查
    二.PlantUML 之活动图
    一.PlantUML 与 IDEA 集成
    ArrayList
    VI常用命令
  • 原文地址:https://www.cnblogs.com/yangmengdx3/p/4565318.html
Copyright © 2011-2022 走看看