实现最基本的单点登出只需在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>: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端的:8443/cas/logout地址就可以了。server会通知所有客户端用户已登出,销毁各自的session的。
这样登出后会默认停留在注销成功的页面,如果想跳到其它页面,重定向的时候加service参数
redirect::8443/cas/logout?service=: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}"/>
转载请注明出处:/redstarofsleep