webshell定时器与CAS单点冲突的奇葩问题

来源:互联网 发布:php获取访客唯一标识 编辑:程序博客网 时间:2024/06/12 18:40

最近在开发时遇到一点小问题:在退出CAS登录后重新登录以后,没有跳转到指定的登入页面,而是返回了一个json的API

报文格式如下:

Request URL:http://127.0.0.1:8080/XXXXX/j_spring_cas_security_check?ticket=XXXXXXXXXXXX.example.org

Response Headers
view source
Content-Length:0
Date:Thu, 05 Nov 2015 03:03:33 GMT
Location:http://127.0.0.1:8080/XXXXX/api/xxx/xxx?xxx=30&xxx=out


就是我登录成功以后,那着ticket去访问,结果返回了一个API的response,然后到filter里面一点点打断点差,有response肯定有request存在,后来发现的确有request,且种类是defaultsavedrequest,最终查到这个request是上次登出由(定时器)之前发出。

复现:

清空缓存(ticket)--定时器发出请求--CAS返回重定向--url输入重新登录

此时第二步发出的请求被CAS缓存,要我们重定向,但是我们又重新再url输入地址,发出请求。认证通过后CAS放行的是前面的请求,导致我们请求index.html的request发出去,

却的到一个API的response。


解决办法:

尝试在CAS,或者filter改进,没有能找到适应性较好的方法,都是针对这个API的种类以及请求资源做抛出,遂放弃。改为在前端定时器请求的时候加上本地cookie是否有ticket的判断。防止冗余请求的发出

0 0
原创粉丝点击