cas 登出无效解决方法总结,Error Sending message to url endpoint,登出后刷新还可以进入

访问:https://server.com/cas/logout后,访问客户端的项目还可以进入,研究了一下午终于总结了几个登出无效的原因:

1、最基本的配置:登出过滤器,该过滤器必须在cas校验过滤器之前,也可以说该过滤器在web.xml中所有过滤器之前。

<!-- 该过滤器用于实现单点登出功能,登出功能中属于必配项 -->
<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>
<!-- 用于单点退出,该过滤器用于实现单点退出功能 -->
<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
<stener>

 

2、上面配置如果没问题,就是域名的问题了,我就是因为这个原因纠结了一下午:

不能使用不管是服务端还是客户端不能使用localhost

如果使用localhost在访问logout时,服务端日志会有警告:

Error Sending message to url endpoint,

因为如果客户端使用localhost访问的项目,在发送登出请求到服务端时,服务器就会接到来自客户端的请求,并且地址为‘localhost/xxx’,所以,服务器就会发送请求至localhost销毁ticket,但是localhost对服务端来说是访问本地,所以销毁ticket失败,现在明白了吧。

 

注意要在服务端与客户端同时修改hosts文件,确保服务端与客户端通过设置的域名能够互相访问成功,然后在注销就可以成功了。

发表评论