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

最近在开发时遇到一点小问题:在退出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的判断。防止冗余请求的发出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值