`
starbhhc
  • 浏览: 657760 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

第二节:cas处理中文乱码

    博客分类:
  • java
 
阅读更多

cas service配置参考第一节。

casServiceValidationSuccess.jsp页面默认编码格式为ISO-8859-1,且在表单提交到客户端页面时,也使用IS0进行编码,为了处理中文,可以在页面上使用URLEncoder对需要传递的中文时行UTF-8编码,然后从客户端取得数据时,再做URLDecoder解码:

casServiceValidationSuccess.jsp页面,真是一个奇怪的页面,由于cas使用手工解析(没有使用任何dom解析,硬编码识别标标签的开始和标签的结束)xml的方式解析xml文件,所有,在修改此文件时,一定要加以注意:

以下是源代码

<%@ page session="false" contentType="text/xml; charset=UTF-8"import="java.net.URLEncoder"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>

    <cas:authenticationSuccess>

<cas:user>${fn:escapeXml(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.id)}</cas:user>

 

<!-- start   登录成功后获取用户的更多信息 -->

<c:if test="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes) > 0}">

            <cas:attributes>

                <c:forEach var="attr" items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}">

                   <c:set var="val" value="${fn:escapeXml(attr.value)}"/>

                    <cas:${fn:escapeXml(attr.key)}><%=URLEncoder.encode((String)pageContext.getAttribute("val"),"UTF-8")%>

 </cas:${fn:escapeXml(attr.key)}>

 

//或者:

 

<c:set var="val" value="${attr.value}"/>

 <cas:${attr.key}><%=URLEncoder.encode((String)pageContext.getAttribute("val"),"UTF-8")%></cas:${attr.key}>

 

 

 

</cas:${fn:escapeXml(attr.key)}>

                </c:forEach>

            </cas:attributes>

        </c:if>

 <!-- end -->

 <!-- 

  <cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>

  -->

 

                    

<c:if test="${not empty pgtIou}">

<cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket>

</c:if>

<c:if test="${fn:length(assertion.chainedAuthentications) > 1}">

<cas:proxies>

<c:forEach var="proxy" items="${assertion.chainedAuthentications}" varStatus="loopStatus" begin="0" end="${fn:length(assertion.chainedAuthentications)-2}" step="1">

<cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy>

</c:forEach>

</cas:proxies>

</c:if>

</cas:authenticationSuccess>

 

 

 

                

</cas:serviceResponse>

经过编码以后的XML数据如下:

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>

    <cas:authenticationSuccess>

       <cas:user>U003</cas:user>

        <cas:attributes>

                  <cas:pwd>1111</cas:pwd>

                  <cas:username>%E5%BC%A0%E4%B8%89</cas:username>

       </cas:attributes>

    </cas:authenticationSuccess>

</cas:serviceResponse>

 

可见,对中文进行了UTF-8编码。

 

在客户端使用URLDecoder进行解码:

以下:

<%@page  import="java.net.*" %>

    <%

       Assertion assertion = AssertionHolder.getAssertion();

       AttributePrincipal ap =  assertion.getPrincipal();

       String id = ap.getName();

       Map<String,Object> att = ap.getAttributes();

       out.print("<br/>"+id);

       out.print("<br/>"+att);

       String name = URLDecoder.decode(""+att.get("username"), "UTF-8");

       out.println("<br/>"+name);

    %>

分享到:
评论

相关推荐

    第七节:CAS4.0.0 以上服务端配置多个数据源

    这里,`JdbcServiceRegistryDaoImpl`是CAS服务注册表的实现,我们将`secondaryDataSource`注入其中,使其使用第二个数据库进行服务注册操作。 当然,多数据源配置可能会更复杂,特别是当你需要在事务管理中同时操作...

    H3C云数合作伙伴CAS存储售后培训PPT汇总集【腾云系列】.rar

    目录: 第2016期:云计算软件维护经验分享 ...第2025期:CAS存储模块详解(上)——OCFS2文件系统分布式锁介绍 第2026期:CAS存储模块详解(下)——磁盘锁与RBD介绍 第2027期:CAS CVM管理平台详解

    cas 中文 服务器端、客户端 乱码解决方案

    NULL 博文链接:https://jerry-doit.iteye.com/blog/724436

    落雨博客基于CAS框架的单点登录技术讲解(ppt+code实例+doc)配套资料

    [置顶] SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析 http://blog.csdn.net/ae6623/article/details/8848107 目 录 1 引言 4 1.1 摘要 4 1.2 范围 4 1.3 读者对象 4 1.4 关键词 4 2 ...

    H3C云数合作伙伴全系列产品售后培训PPT汇总集【腾云系列】.rar

    第2期:CAS开局指导 第3期:CAS产品虚拟机生命周期管理 第4期:ONEStor开局指导介绍 第5期:ONEStor概述和产品维护 第6期:H3C UIS 6.0超融合产品介绍及开局指导 第7期:H3C UIS6.0超融合产品维护 第8期:云...

    cas-client-core-3.2.1-API文档-中英对照版 (1).zip

    包含翻译后的API文档:cas-client-core-3.2.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.jasig.cas.client:cas-client-core:3.2.1; 标签:jasig、client、cas、core、中英对照文档、jar包、...

    CAS单点登录系统之java实现(part_1)

    资源列表(1:cas CAS Server,2:Cas_Client_One 授权系统,3:graduationDesign 用户组织管理系统,4:CAS单点登录论文.doc,5:CAS单点登录文献综述.doc,6:基于CAS的用户管理单点登录门户系统ppt.ppt)

    CAS单点登录系统之java实现(part_2)

    资源列表(1:cas CAS Server,2:Cas_Client_One 授权系统,3:graduationDesign 用户组织管理系统,4:CAS单点登录论文.doc,5:CAS单点登录文献综述.doc,6:基于CAS的用户管理单点登录门户系统ppt.ppt)

    cas客户端jar包

    2. **CAS Client**:即我们的jar包,它包含了一组Java类和接口,使得应用程序能够与CAS服务器交互,处理用户的登录和验证过程。 3. **Service URL**:每个应用都有一个服务URL,用于标识自身,CAS服务器会根据这个...

    Cas Server 3.4.2 和 Cas Client 3.1.6 的源代码

    **Cas Server 3.4.2 和 Cas Client 3.1.6 源代码解析** CAS(Central Authentication Service)是一种广泛使用的开放源代码单一登录(Single Sign-On, SSO)框架,它允许用户通过一个认证入口点访问多个应用系统,...

    cas-client-3.2.1和cas-server-3.5.2

    1. **认证协议**: CAS支持多种认证协议,如CAS Protocol(版本1, 2, 3),SAML 1.1, SAML 2.0等,允许与其他系统集成。 2. **服务管理**: CAS Server维护一个服务注册表,其中包含所有需要SSO保护的应用。管理员可以...

    cas-server-4.0.0-release与依赖包.zip

    5. **依赖库**:CAS运行所需的第三方库,包括Spring框架、Apache HttpClient等,这些库被用来处理HTTP请求、数据库连接等。 描述中的“CAS实现SSO单点登录”意味着CAS的主要功能就是提供SSO服务。它通过代理认证...

    cas-client-3.2.1 cas-server-3.4.11

    2. **CAS服务器**: CAS服务器是认证的核心,负责处理用户的登录请求,验证用户凭证,并生成服务票证(Service Ticket)。"cas-server-3.4.11-release.zip"中可能包含: - 服务器应用:如WAR文件,可部署在Tomcat...

    cas-3.4.1_单点登录_CAS_

    2. **协议支持**:CAS支持多种协议,如CAS原生协议、SAML 1.1和2.0、OAuth 2.0、OpenID Connect等,使得CAS能够与其他系统(如Web应用程序、APIs等)无缝集成。 3. **服务管理**:CAS提供了一个服务注册中心,可以...

    cas-server4.0

    2. **协议支持**:CAS 4.0.0支持多种协议,包括CAS v1、v2、v3以及SAML 1.1,这些协议允许与其他身份验证系统进行互操作。此外,还支持OAuth和OpenID Connect,使得现代Web应用和移动应用可以轻松集成。 3. **服务...

    cas验证包--3.5.3版本文件

    2. **协议支持**:CAS支持多种认证协议,如CAS协议本身、SAML 1.1/2.0、OAuth、OpenID Connect等,这些协议使CAS能与各种不同的应用和服务进行交互。 3. **票证(Ticket)机制**:CAS通过票证(Ticket)实现认证...

    cas-5.2.0源码

    - **Jasig Filter**:CAS 客户端通常通过 Jasig Filter 实现与服务端的通信,过滤器拦截请求并处理 CAS 的票据(ticket)。 3. **认证流程**:在 CAS 5.2.0 中,典型的认证流程包括预认证(pre-authentication)、...

    cas开源单点登录框架

    2. **协议支持**:CAS支持多种协议,如CAS Protocol、SAML 1.1、SAML 2.0等,这些协议提供了与其他系统集成的能力,使得SSO不仅限于Java应用。 3. **部署与配置**:CAS-4.0.1可以作为一个独立的Web应用运行在Tomcat...

    cas-server-3.5.0-release.zip

    2. **服务管理**:CAS服务器维护了一个服务注册表,其中记录了所有可以使用SSO的受保护应用。管理员可以通过配置文件或Web界面添加、删除和管理服务。 3. **票证系统**:CAS的核心是票证(Ticket)系统,包括服务...

Global site tag (gtag.js) - Google Analytics