发表于:2011.04.14 14:53
分类: Java
出处:http://pingzonglangji.itpub.net/post/39631/516541
---------------------------------------------------------------
在实施CAS3的过程中,发现客户端在登录成功后,获取服务端返回的登录信息中如果包含有中文时出现乱码,google后发现网上介绍的N多办法:
1. 增加一个全局过滤器
2. 修改服务端认证成功JSP页面的编码
3. 修改源代码,服务端编码,客户端解码(没测试过)
都不能解决该问题.
通过阅读源代码,发现在Ticket校验的过滤器中有一个编码参数负责对这个信息进行处理.而官方的文档中并没有介绍,同时官方的客户端配置指南中也没有配置这个参数.
OK! 在客户端应用的web.xml中加上这个配置(加粗部分),一切搞定.
例子如下:
<!--负责Ticket校验 -->
<filter>
<filter-name>CAS Validation Filter</filter-name>
<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>http://casserver.domain.com</param-value>
</init-param>
<init-param>
<param-name>useSession</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://casclient.domail.com</param-value>
</init-param>
<init-param>
<param-name>redirectAfterValidation</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>