tomcat - 在 war 之外保护对文件的访问

标签 tomcat spring-security

我有一个使用 Spring 3.1 构建的 Web 应用程序,使用 Spring Security 3.0,部署在 Tomcat 6 下。站点中的某些页面仅对具有 ROLE_MEMBER 角色的用户可用。其中一个页面显示了可供下载的动态文件列表。用户可以使用应用程序内的安全表格上传新文件。我的问题是:我可以在哪里存储文件,以便 Spring Security 保护对它们的访问?我目前将它们放在 Web 应用程序文件夹中,但这使得部署新版本的应用程序很痛苦,因为我必须备份文件并在 Tomcat 重新部署新版本后恢复它们。

最佳答案

Spring Security 可以保护某些 URL 或方法调用。它无法保护您的文件。所以你的文件在哪里并不重要。用户可以使用哪个 URL 下载某些文件很重要。

例子:

http://domain.com/files.html - list of files

对应文件:

http://domain.com/files/file1.pdf
http://domain.com/files/file2.doc
http://domain.com/files/file3.png

安全配置:

<intercept-url pattern="/files.html" access="hasRole('ROLE_MEMBER')" />
<intercept-url pattern="/files/**" access="hasRole('ROLE_MEMBER')" />

实际文件路径(从安全角度来看它们并不重要):

/home/user/uploads/file1.pdf
/home/user/uploads/file2.doc
/home/user/uploads/file3.png

当然,您需要一些 servlet/ Controller 来负责通过给定的 URL 发送文件内容。

关于tomcat - 在 war 之外保护对文件的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787776/

相关文章:

java - 如何将 Tyrus(JSR 356 实现)部署到 Web 容器?

java - 无法在 Eclipse 和 Tomcat 中创建断点

java - Tomcat 7.0.47 - Windows - 缺少未处理的异常/堆栈跟踪

spring - Grails Spring Security 插件 - 保护除根路径之外的所有内容

spring-security - Spring 拦截 url 模式

tomcat - 使用 Apache HTTP 实例支持 Tomcat 的最简单方法

tomcat - 似乎 CXF 不是每次都生成 wsdl

security - 如何在 tomcat 6 中将 session cookie 标记为安全(仅限 https)

spring-security - spring security中的客户端证书认证

java - 带有Spring Boot的RESTful Web服务中的授权和身份验证