如何在Spring中保护对静态资源的访问

时间:2012-12-24 23:55:11

标签: spring spring-mvc spring-security

我正在从Web应用程序外部的文件夹提供图像。我将图像存储在C:\ source \ Pictures中。我在Spring的servlet上下文文件中将此资源配置为静态资源:

<resources location="file:///C:/source/Pictures/" mapping="/img_resources/**"/>

我使用

显示存储在该文件夹中的图像
<img src="<spring:url value='/img_resources/guinnes_choc_cake.jpg/'/>"></img>

对我来说效果很好。但是,我有安全问题。我不希望将公共服务器中的目录暴露给公众。1

有没有办法在Spring中围绕此文件夹构建安全性?

2 个答案:

答案 0 :(得分:7)

如果您使用的是Spring Security,可以在Spring上下文文件中添加类似的内容:

<sec:intercept-url pattern="/img_resources/**" access="isAuthenticated()" />

答案 1 :(得分:1)

没有特别的理由限制对静态资源的访问。

鉴于目录结构定义良好且文件排序是语义的(即img_resources文件夹仅包含图像),您应该允许访问此类资源,或者甚至完全绕过过滤器以避免通过的过程过滤链,例如:

<sec:intercept-url pattern="/img_resources" filters="none" />

来自Spring Security tutorial

  

我们不希望Spring处理静态资源   安全的过滤器。为此,您可以添加其他内容   <http>块仅适用于特定模式。这必须来   在现有块之前,因为它适用于特定模式。如果不   提供了pattern属性,该块适用于任何请求。