2

我正在使用 OpenId 模块构建一个带有 Spring Security 的测试应用程序。我还使用jQuery OpenId 插件来支持一些提供程序。

我正在使用 Tomcat(版本 7)测试该应用程序,经过一些故障排除后,我发现我需要为服务器指定 URI 编码,以支持其凭据包含波浪字母和元音的用户,例如 Peñasco、Ángel 等。

在 Tomcat 中,我只需将其设置为tomcat-server.xml文件:

<Connector URIEncoding="UTF-8" SSLEnabled="true" .../>

但是该应用程序被部署在 OpenShift PaaS 上的 JBoss AS 7 盒式磁带中。

在这种情况下如何放置模拟配置?

编辑:

我添加了.openshift / action_hooks / pre_start_jbossas-7包含以下内容的文件:

#!/bin/bash

# Need to set URI encoding to UTF-8 because of Spring Security OpenID module needs it for tilded letters e.g. ñ, Á

export JAVA_OPTS=" -Dorg.apache.catalina.connector.URI_ENCODING=\"UTF-8\" -Dorg.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING=true"

但它不能远程工作,我在本地服务器上使用了相同的选项,但它不起作用。

4

2 回答 2

4

对我来说,添加

URIEncoding="UTF-8"

进入 .openshift\config\server.xml 中

<Connector address="${OPENSHIFT_JBOSSEWS_IP}"
           port="${OPENSHIFT_JBOSSEWS_HTTP_PORT}"
           protocol="HTTP/1.1"
           URIEncoding="UTF-8"
           connectionTimeout="20000"
           redirectPort="8443"/>
于 2014-01-19T23:36:25.670 回答
3

在 JBoss AS7 中,您可以使用系统属性配置此功能:

-Dorg.apache.catalina.connector.URI_ENCODING="UTF-8"
-Dorg.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING="true"

参考见:https ://community.jboss.org/message/643825#643825

您也可以在 的<system-properties>部分中设置这些standalone.xml,但在 OpenShift 上,此文件不受您的应用程序控制。对于 OpenShift 应用程序,您需要通过在应用程序的预启动挂钩中设置 JAVA_OPTS 来使用这些选项启动 JBoss。为此,请将以下内容添加到.openshift/action-hooks/pre_start_jbossas-7文件中:

export JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.connector.URI_ENCODING=\"UTF-8\" \
                  -Dorg.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING=\"true\""

希望这可以帮助。如果您遇到问题,请发表评论。

于 2013-01-16T18:57:23.440 回答