CAS接受服务器端返回值中文乱码问题解决方法 | 您所在的位置:网站首页 › cas中文乱码 › CAS接受服务器端返回值中文乱码问题解决方法 |
CAS接受服务器端返回值中文乱码问题解决方法
这几天在做CAS,客户端使用的是shiro-cas,cas服务器版本4.0.0,shiro-cas版本1.2.6。发现当客户端返回的用户信息中有中文时,会造成乱码。网上搜索都说的时加过滤器,编码什么的,然而并没什么用。通过跟踪代码,发现 造成乱码的原因是shiro-cas中的CasRealm获取CAS服务器返回字符串的时候没有编码造成的,故有如下解决方法: 重写 AbstractUrlBasedTicketValidator AbstractCasProtocolUrlBasedTicketValidator Cas20ServiceTicketValidator它们的代码什么的,直接重从他们源代码中复制过来,重点在于将这三个重写的类都增加一个构造方法,在原构造方法的基础上增加一个encoding参数,然后实现自己的CasRealm的时候,增加一个私有属性ticketValidator,重写其中的onInit()、ensureTicketValidator()、createTicketValidator()这三个方法。他们的具体方法都可以直接从CasRealm中拷贝过来,不过createTicketValidator()方法最后返回的时候需要修改为return new MyCas20ServiceTicketValidator(urlPrefix,”utf-8”); 具体代码如下: |
CopyRight 2018-2019 实验室设备网 版权所有 |