此类问题主要为CAS系统与web项目对页面编码的设置不一致造成的。
解决方法如下:
1. 在CAS服务端的WEB-INF\web.xml中添加:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
下边为SetCharacterEncodingFilter代码:
package filters;
import java.io.IOException;
import javax.servlet.*;
public class SetCharacterEncodingFilter implements Filter {
public SetCharacterEncodingFilter() {
encoding = null;
filterConfig = null;
ignore = true;
}
public void destroy() {
encoding = null;
filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (ignore || request.getCharacterEncoding() == null) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
ignore = true;
else if (value.equalsIgnoreCase("true"))
ignore = true;
else if (value.equalsIgnoreCase("yes"))
ignore = true;
else
ignore = false;
}
protected String selectEncoding(ServletRequest request) {
return encoding;
}
protected String encoding;
protected FilterConfig filterConfig;
protected boolean ignore;
}
2. 修改
WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp
在该文件页首添加<%@ page pageEncoding="GBK"%>。
这里对pageEncoding的赋值取决于CAS系统所管理的项目中对页面编码的设置。
例如,利用CAS对helper项目进行登录验证管理,Passport
(CAS服务端,负责对用户进行验证)中编码为“UTF-8”而helper中编码为“GBK”,casServiceValidationSuccess.jsp负责在CAS对用户验证成功后将用户信息转往helper/CAS/login.jsp页面,用户信息发送与接受处的编码不一致,导致在login.jsp上不能获得正确的中文信息(获得的均为问号)。因此应在casServiceValidationSuccess.jsp页面上添加<%@ page pageEncoding="GBK"%>,
从而与helper/CAS/login.jsp上的页面编码(GBK)设置相一致。
分享到:
相关推荐
cas 单点登录 解决方案.
本项目用于实际单点登录项目中集成cas修改项目登录页,直接解压项目导入ecliplse即可以使用,脚本用原来自带的就可以
使用tomcat部署CAS项目 使用CXF整合CAS
本人亲自试验的cas单点登录配置,服务端用cas-server-3.5.2,客户端用cas-client-3.2.1,里边详细描述了具体每一步的配置过程及遇到的问题及异常,相信你也会碰到的,cas-client-3.2.1中需要修改一个java类的源代码...
CAS整合LDAP实现单点登录的原理及部署学习笔记,cas实现单点登录,ldap负责账户管理
CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架,本文介绍了 CAS 的原理、协议、在 Tomcat 中的配置和使用,对于采用 CAS 实现轻量级单点登录解决方案的入门读者具有一定指导作用。
详细描述了cas 自定义登陆页面的配置与demo
cas、第三方接口登录,cas单点登录,qq,微博第三方接口接入,快速登录
本文在已有的禅道集成CAS单点登录的客户端插件基础上进行的修改,因原有插件在我们的系统上调试无法成功,做了一些定制,环境如下: 1. CAS server 版本:4.0.0 2. 禅道开源版本: 9.6.3 3. 禅道CAS client 插件版本...
cas 结合 springmvc shiro 做项目单点登录包括cas服务端,cas客户端。shiro-cas集成项目
基于CAS的单点登录系统,可以通过这些步骤来实现不同系统展示不同的登录页,但是登录后的信息共享
无https验证的CAS单点登录,统一认证
包含cas源码、cas使用说明文档(包含配置信息)、连接数据库所需jar包、cas服务端自定义返回值等
cas客户端集成单点登录代码cas客户端集成单点登录代码cas客户端集成单点登录代码cas客户端集成单点登录代码cas客户端集成单点登录代码cas客户端集成单点登录代码
1 单点登录总体解决方案 2 CAS原理和协议 3 CAS安全性 4 CAS工作模式 5 系统设计方案 6 CAS关键技术 6.1 域名规范 6.2 中文用户登录提交时乱码 6.3 客户端获取中文用户名及更多信息乱码 7 单点登录风险 7.1 无人...
CAS单点登录操作文档 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: • 开源的企业级单点登录解决...
CAS单点登录CAS单点登录CAS单点登录CAS单点登录
cas 。net单点登录demo cas 。net单点登录demo cas 。net单点登录demo
基于java的cas单点登录集成,完整的源码和测试用例
资源列表(1:cas CAS Server,2:Cas_Client_One 授权系统,3:graduationDesign 用户组织管理系统,4:CAS单点登录论文.doc,5:CAS单点登录文献综述.doc,6:基于CAS的用户管理单点登录门户系统ppt.ppt)