首页 > 解决方案 > JasperRunManager 无法访问同一安全约束中的内容

问题描述

我有一个遗留应用程序,它使用 servlet + jrxml 文件向用户呈现报告;此报告必须通过 servlet 访问一些图像

图像 servlet 映射为 /images/ 并在 web.xml 文件中像这样受到保护

<security-constraint>
        <web-resource-collection>
            <web-resource-name>images</web-resource-name>
            <url-pattern>/images/*</url-pattern>
        </web-resource-collection>
</security-constraint>

报告使用 servlet 获取一些数据,然后使用 JasperRunManager 基于一些 jrxml 文件创建 pdf 文件;代码是这样的

inputStream = this.getClass().getResourceAsStream(jrxmlFileName);
connection = getDatabaseConnection();
parameters.put("IS_IGNORE_PAGINATION", false);
bytes = JasperRunManager.runReportToPdf(inputStream, parameters, connection);
servletOutputStream.write(bytes, 0, bytes.length);

报告 servlet 的映射类似于图像 servlet

<security-constraint>
        <web-resource-collection>
            <web-resource-name>report</web-resource-name>
            <url-pattern>/report</url-pattern>
        </web-resource-collection>
</security-constraint>

但是当我运行报告 servlet 时,它无法访问 /images servlet 中的图像;我知道这是一些安全问题,因为如果我禁用图像 servlet 的安全约束,那么报告运行良好

有没有什么办法解决这一问题 ?

标签: javasecuritywebservletsjasper-reports

解决方案


推荐阅读