1. 问题描述
10.0 集成 CAS 之后,远程设计的请求会被 CAS 拦截,导致无法进行远程设计。
2. 解决方案
点击下载新增拦截和 xml 文件:CAS远程设计.zip
2.1 定义 RemoteFilter
1)需要另外定义一个 RemoteFilter,在请求的一开始就过滤 /remote/design的请求(这个是远程设计走的请求路径)。定义 RemoteFilter 源码如下:
package com.fr;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class RemoteFilter implements Filter {
public void destroy() {
}
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)servletRequest;
HttpServletResponse res = (HttpServletResponse)servletResponse;
req.getRequestDispatcher(req.getServletPath() + req.getPathInfo()).forward(req, res);
}
}
2)将编译后的 class 文件放在工程路径%TOMCAT_HOME%/webroot/WEB-INF/classes/com/fr下,如下图所示:
2.2 修改 Web.xml
在%TOMCAT_HOME%\webapps\webroot\WEB-INF目录下对 Web.xml 新增拦截或使用本文提供的附件中的 xml 文件替换。Web.xml 里相应在所有 Filter 的头部加入这个新增的 Filter,代码如下:
<filter>
<filter-name>RemoteFilter</filter-name>
<filter-class>com.fr.RemoteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RemoteFilter</filter-name>
<url-pattern>/decision/remote/design</url-pattern>
<url-pattern>/decision/remote/design/*</url-pattern>
</filter-mapping>
如下图所示:
2.3 重启工程
重启报表工程。
3. 注意事项
设置完成后,若仍无法远程连接工程,请排查远程设计的的用户名是否有「远程设计权限」,详情请参见:远程设计