CAS单点登录成功,有的请求正常,有的请求却报错no ticket and no assertion found

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010295735/article/details/85765509

公司项目用到了CAS单点部署。登录成功能够进入系统,且功能使用都正常。但很奇怪的是,有一个请求,一直无法请求到后台,后台报错是:no ticket and no assertion found。这个报错表面看起来是票据未找到,是单点登录配置或session的问题。但是其他请求都能成功且功能使用也正常,唯独它一个请求不行,所以排除了单点登录配置和session问题。真是个神奇的坑爹的问题,查了很久,终于找到了原因,以作记录,预防后面再次遇坑,也希望能够遇到同样问题的朋友一个参考。

其实,原因找到以后也非常简单。这个请求是用$.post请求的后台。jQuery的$.post默认是以formData的方式提交参数的:

  

而,我用的3.4.1版本的CAS验证票据的filter核心是从request中取session。以formData的方式提交参数,CAS验证时无法正确获取request和session,故而报错no ticket and no assertion found。

只需要将$.post的请求改成ajax请求,并且在加上配置contentType: "application/json",即可:

    

这样修改以后,参数就以request Payload方式提交了。CAS正常获取到session和其中的验证信息,问题解决。

初次使用CAS,如解释有误请指正。

猜你喜欢

转载自blog.csdn.net/u010295735/article/details/85765509
今日推荐