如何使用Tomcat过滤器保护pdf文件?

嗨,如何使用Tomcat过滤器保护pdf文件?

我目前正在运行一个带有struts 1的tomcat实例,我希望tomcat能够检测到在URL中请求pdf文件(例如链接:http://www.***.com/files/action=download&name=myreport.pdf)。

在这一点上,我想要一个Java类被实例化,然后使用PDF API我想注入一个密码到一个文件。这里的主要观点是我不想将原始的pdf文件中的密码存储在服务器上,而是希望Tomcat在运行时注入密码。

请让我知道如果你有任何想法,我做了一些研究,我遇到了tomcat过滤器,但我不确定这是否能解决这个问题。

请注意密码存储在数据库表中。

感谢

回答:

从过滤器我们调用一个Java类来做实际的“注入密码”。

web.xml中的条目会将您的调用重定向到特定的过滤器。

<!--web.xml call all calls to .pdf will invoke the particular filter.--> 

<filter>

<filter-name>PDF Filter</filter-name>

<filter-class>PDFFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>PDF Filter</filter-name>

<url-pattern>*.pdf</url-pattern>

</filter-mapping>

//This is the actual filter

public class PDFFilter implements Filter

{

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException

{

PDFPasswordInjector pdfPassInject = new PDFPasswordInjector();

//use HttpServletRequestWrapper to get the pdf location/pdf name

pdfPassInject.injectPassword("<pdf location>");

chain.doFilter(request, response);

}

}

//Java class to inject the password

public class PDFPasswordInjector

{

public boolean injectPassword(String sPDFName)

{

// retrieve password from DB

// use API to inject password to PDF

}

}

回答:

  1. 创建servlet
  2. 设置的url-pattern来的* .pdf
  3. 每当你的PDF格式的URL被调用时,该servlet被执行。
  4. 在将PDF返回给用户作为响应之前,从servlet中执行任何您想要的操作。

回答:

编写Filter来拦截所有返回PDF的请求应该是相当直接的。过滤器的doFilter()方法可以访问请求和响应,所以你可以随意修改它。

回答:

过滤器不是解决这个问题的方法。筛选器允许您修改请求并使其重定向或重新分派到不同的servlet。但是他们不允许你重写响应主体。根据我的理解,这就是你想要做的。

您将不得不在Servlet中执行PDF文件修改,如@Aardvocate的回答中所述。

以上是 如何使用Tomcat过滤器保护pdf文件? 的全部内容, 来源链接: utcz.com/qa/257608.html

回到顶部