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

公司项目用到了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,如解释有误请指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值