• (二)SSO之CAS框架单点退出,自己定义退出界面.


    用CAS的退出,仅仅能使用它自己的那个退出界面,假设有这种要求, 要求退出后自己主动跳转到登录界面, 该怎样做呢?

    以下这篇文章实现了退出后能够自己定义跳转界面. 

    用了CAS,发现退出真是个麻烦事,退出后跳转到了CAS的注销页面,并且不关闭浏览器的话。事实上并没有真的退出。输入地址仍是登陆状态。

    为了实现退出后登陆到跳转页面,做了下面配置:


    1.server 端

    改动srcmainwebappWEB-INFcas-servlet.xml里的logoutController
    添加p:followServiceRedirects="true"使支持logout输入service參数为跳转路径。


    1. <bean id="logoutController" class="org.jasig.cas.web.LogoutController"  
    2. p:centralAuthenticationService-ref="centralAuthenticationService"  
    3. p:logoutView="casLogoutView"  
    4. p:warnCookieGenerator-ref="warnCookieGenerator"  
    5. p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator"   
    6. p:followServiceRedirects="true"  
    7. />  


    2.client
    web.xml 中在登录的filter之前添加

    1. <!-- 填写退出的URL -->  
    2.   <context-param>  
    3.     <param-name>casServerLogoutUrl</param-name>  
    4.     <param-value>http://10.1.83.34:8080/cas/logout</param-value>  
    5.   </context-param>  
    6.    <!--单点退出配置-->  
    7.     <listener>  
    8.     <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>  
    9. </listener>   
    10. <filter>  
    11.    <filter-name>CAS Single Sign Out Filter</filter-name>  
    12.    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>  
    13. </filter>  
    14. <filter-mapping>  
    15.    <filter-name>CAS Single Sign Out Filter</filter-name>  
    16.    <url-pattern>/*</url-pattern>  
    17. </filter-mapping>  



    在JSP中,假设直接把退出转到cas/logout之后,会跳转到CAS的注销页面,这个情况下,假设直接点击浏览器的回退button,发现仍然能够正常操作。也就是session并没有被注销掉,可能CAS的logout仅仅是去掉了TGT吧。
    为了解决问题,我仅仅好又一次写了个JSP。退出button跳转到这个JSP,这个JSP里先注销session, 然后再跳转到CAS的退出。并添加service參数。使跳转到登陆页面。
    1. <a  
    2.     href="${pageContext.request.contextPath}/web-root/include/logout.jsp" ></a>  
    3. <div id="box_T5" class="toptaps5">退出登录</div>  



    logout.jsp内容:
    1. <body>  
    2. <%  
    3. session.invalidate();  
    4. response.sendRedirect(application  
    5. .getInitParameter("casServerLogoutUrl")  
    6. + "?service="  
    7. + application.getInitParameter("serverName") + "/myweb");  
    8. %>  
    9. </body>  
    说明:"/myweb"就是你退出后默认转到的界面, application.getInitParameter,须要自己在web.xml中增加context-parameter的配置. 这样才干成功跳转到你退出登录后想要跳转到的界面.

    经过測试。能够实现所要的功能。

  • 相关阅读:
    VS2012写的程序在VS2010打开时显示当前版本不兼容
    (转载)Sumblime Text 2 常用插件以及安装方法
    (转载)Nginx防盗链的几种方法
    C#对字符串执行字节操作
    转载:自动生成数据库文档
    SQL SERVER “扩展属性"的应用
    使用EventLog实现事件日志操作
    SQL SERVER2005无日志文件附加数据库最简单的方法(转载)
    网站分析工具Google Analytics
    学习使用master.dbo.spt_values表
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5111185.html
Copyright © 2020-2023  润新知