实现最基本的单点登出只需在client处的web.xml中加入一个过滤器和一个监听器
<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>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>https://cas.com:8443/cas</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Single Sign Out Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
过滤器里要注意一下,网上的很多文章都是没有“casServerUrlPrefix”这个参数的,可能是由于版本的原因。我用的3.5.2的没有这个参数启动是会报错的。所以一定要加上这个参数。还有就是这个过滤器要放到cas相关的所有过滤器的最前面。
让后server端登出只需要访问server端的https://cas.com:8443/cas/logout地址就可以了。server会通知所有客户端用户已登出,销毁各自的session的。
这样登出后会默认停留在注销成功的页面,如果想跳到其它页面,重定向的时候加service参数
redirect:https://cas.com:8443/cas/logout?service=https://cas.com:8443/cas/login
同时要修改server端的cas-servlet.xml
将其中的logoutController中p:followServiceRedirects改成true
<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:servicesManager-ref="servicesManager"
p:followServiceRedirects="${cas.logout.followServiceRedirects:false}"/>
转载请注明出处:http://blog.csdn.net/redstarofsleep