如何使用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