如何使用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 
     } 
} 
回答:
- 创建servlet
 - 设置的url-pattern来的* .pdf
 - 每当你的PDF格式的URL被调用时,该servlet被执行。
 - 在将PDF返回给用户作为响应之前,从servlet中执行任何您想要的操作。
 
回答:
编写Filter来拦截所有返回PDF的请求应该是相当直接的。过滤器的doFilter()方法可以访问请求和响应,所以你可以随意修改它。
回答:
过滤器不是解决这个问题的方法。筛选器允许您修改请求并使其重定向或重新分派到不同的servlet。但是他们不允许你重写响应主体。根据我的理解,这就是你想要做的。
您将不得不在Servlet中执行PDF文件修改,如@Aardvocate的回答中所述。
以上是 如何使用Tomcat过滤器保护pdf文件? 的全部内容, 来源链接: utcz.com/qa/257608.html
