2012-12-24 1 views
5

Ich diene Bilder aus einem Ordner außerhalb einer Web-Anwendung. Ich habe Bilder in C: \ source \ Pictures gespeichert. Ich baute diese Ressource als eine statische Ressource im Frühjahr des Servlet-Kontext-Datei:Wie Zugriff auf statische Ressourcen sichern im Frühjahr

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

ich Bilder in diesem Ordner mit

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

Es funktioniert gut für mich gespeichert sind. Ich habe jedoch Sicherheitsbedenken. Ich möchte kein Verzeichnis auf meinem Server der Öffentlichkeit zugänglich machen. 1

Gibt es eine Möglichkeit zu bauen Sicherheit um diesen Ordner im Frühjahr?

+1

Vielleicht sollten Sie einige Antworten auf frühere Anfragen akzeptieren? – micha

+0

@micha danke für die Erinnerung an mich;) – zfranciscus

+0

"Sicherheit um diesen Ordner zu bauen" - welche Art von "Sicherheit" hatten Sie im Sinn? Was ist erlaubt und was nicht? –

Antwort

7

Wenn Sie Spring Security verwenden könnten Sie etwas zu Ihrem Frühling Kontext-Datei (en) hinzufügen:

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

das sieht super aus. Bedeutet dies jedoch, dass nur Benutzer, die authentifiziert wurden, ein Bild anzeigen können? Wenn das so ist, dann könnte ich mit einer Website enden, die überhaupt keine Bilder enthält. Ich möchte immer noch die Öffentlichkeit die Bilder sehen lassen. – zfranciscus

+2

Eigentlich ist isAuthenticated() einer der verfügbaren Ausdrücke, in Ihrem Fall müssten Sie "allowAll" verwenden. Hier finden Sie alle von Spring Security unterstützten Ausdrücke: [Ausdrucksbasierte Zugriffssteuerung] (http://static.springsource.org/spring-security/site/docs/3.0.x/reference/el-access.html). – izilotti

2

Es gibt keinen besonderen Grund, den Zugriff auf statische Ressourcen zu beschränken.

Vorausgesetzt, dass die Verzeichnisstruktur gut definiert ist und die Dateireihenfolge semantisch ist (dh img_resources Ordner enthält nur Bilder), sollten Sie Zugriff auf solche Ressourcen zulassen oder sogar Filter umgehen, um den Overhead beim Durchlaufen der Filterkette zu vermeiden zB:

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

vom Spring Security tutorial:

Wir würden es vorziehen, nicht statische Ressourcen von Spring verarbeitet zu haben, Sicherheitsfilter überhaupt. Um dies zu erreichen, können Sie einen zusätzlichen <http> Block hinzufügen, der nur für ein bestimmtes Muster gilt. Dies muss vor dem bestehenden Block kommen, da es sich auf ein bestimmtes Muster bezieht. Wenn kein Musterattribut angegeben wird, gilt der Block für jede Anfrage.