Java 将url参数转发到CAS
是否有任何方法可以将URL中的任何参数(查询参数)从JAVA客户端转发到CAS 例如: 目前,当我的请求被转发到CAS时,查询参数被丢弃,CAS对这些参数一无所知。我想将这些参数发送到CAS 或者说,我希望CAS接收的服务url是完整的url,包括它拥有的所有参数Java 将url参数转发到CAS,java,spring,cas,Java,Spring,Cas,是否有任何方法可以将URL中的任何参数(查询参数)从JAVA客户端转发到CAS 例如: 目前,当我的请求被转发到CAS时,查询参数被丢弃,CAS对这些参数一无所知。我想将这些参数发送到CAS 或者说,我希望CAS接收的服务url是完整的url,包括它拥有的所有参数 请建议。在CasAuthenticationEntryPoint方法开始中,通过调用createServiceUrl(请求、响应)方法创建服务url 然后,此方法将进一步调用 <code> CommonUtils
请建议。在CasAuthenticationEntryPoint方法开始中,通过调用createServiceUrl(请求、响应)方法创建服务url 然后,此方法将进一步调用
<code>
CommonUtils.constructServiceUrl(null, response, this.serviceProperties.getService(), null, this.serviceProperties.getArtifactParameter(), this.encodeServiceUrlWithSessionId);
</code>
参数:请求HttpServletRequest
响应HttpServletResponse
服务配置的服务url(如果不为空,将使用此url)
serverName如果服务参数为空,则用于构造服务url的服务器名称
artifactParameterName要删除的工件参数名称(即票证)
编码是否对url进行编码(即Jsession)
constructServiceUrl->从HttpServletRequest或给定的serviceUrl构造服务url。如果同时包含serviceUrl和serviceName,则首选提供的serviceUrl 在我的例子中,我在cas配置文件中提供了服务url,因此签入服务url
<code>
if (CommonUtils.isNotBlank(service)) {
return encode ? response.encodeURL(service) : service;
}
</code>
只发送回编码的服务url…而不附加查询字符串。
您还可以在上面看到,默认情况下,null请求对象被发送到constructServiceUrl,因此不会考虑查询参数
解决方案:
我从CasAuthenticationEntryPoint扩展了CasAuthenticationEntryPoint并重写了方法“createServiceUrl”由于它在超级类中受到保护…使其按我希望的方式运行。您是否使用jasig cas?好的,为什么要将这些参数发送到cas?需要根据这些参数值执行一些操作。这些操作应在cas服务器上执行,或者您希望cas将它们转发回应用程序?参数值将定义要在cas服务器上采取的一些操作。