2012-12-24 9 views
5

Webアプリケーションの外のフォルダから画像を提供しています。私はC:\ source \ Picturesの中に画像を保存しました。私は春のサーブレットコンテキストファイル内の静的リソースとしてこのリソースを構成し:Springの静的リソースへのアクセスを保護する方法

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

私はそれは私のために働く

<img src="<spring:url value='/img_resources/guinnes_choc_cake.jpg/'/>"></img> 

を使用して、そのフォルダに保存された画像を表示します。しかし、私はセキュリティ上の懸念があります。私は自分のサーバー内のディレクトリを公開することを望まないでしょう。 1

春にこのフォルダの周りにセキュリティを構築する方法はありますか?

+1

これまでの質問に対する回答を受け入れる必要がありますか? – micha

+0

@micha私に思い出させてくれてありがとう;) – zfranciscus

+0

"このフォルダの周りにセキュリティを構築する" - どのような "セキュリティ"を覚えていましたか?許可されるものとされないものは何ですか? –

答えて

7

あなたは春のセキュリティを使用している場合は、あなたのSpringコンテキストファイル(複数可)に、このような何かを追加することができます:静的リソースへのアクセスを制限する特別な理由はありません

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

素晴らしいですね。ただし、認証されたユーザーだけが画像を表示できますか?もしそうなら、私は全く写真のないウェブサイトに終わるかもしれない。私はまだ画像を一般の人に見せたい。 – zfranciscus

+2

実際にisAuthenticated()は使用できる式の1つです。明らかにあなたの場合は「permitAll」を使用する必要があります。ここでは、Spring Securityがサポートするすべての式を見つけることができます:[Expression-Based Access Control](http://static.springsource.org/spring-security/site/docs/3.0.x/reference/el-access.html)。 – izilotti

2

ディレクトリ構造がよく定義されており、ファイルの順序が意味(つまり、img_resourcesフォルダに画像のみを含む)である場合、フィルタチェーンを通過するオーバーヘッドを避けるために、そのようなリソースへのアクセスを許可するか、例えば:Spring Security tutorialから

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

私たちは春01によって処理された静的リソースを持って希望しませんセキュリティのフィルタはまったくありません。これを実現するには、特定のパターンにのみ適用される <http>ブロックを追加することができます。これは、特定のパターンに適用されるので、既存のブロックの前に に来る必要があります。 パターン属性が指定されていない場合、ブロックはどの要求にも適用されます。

関連する問題