2012-12-24 15 views
5

Sto servendo immagini da una cartella esterna a un'applicazione web. Ho memorizzato le immagini all'interno di C: \ source \ Pictures. Ho configurato questa risorsa come una risorsa statica nel file di contesto servlet di primavera:Come proteggere l'accesso alle risorse statiche in primavera

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

visualizzo le immagini memorizzate nella cartella utilizzando

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

E funziona bene per me. Tuttavia, ho problemi di sicurezza. Non vorrei esporre una directory nel mio server al pubblico. 1

C'è un modo per creare sicurezza attorno a questa cartella in primavera?

+1

Forse dovresti accettare alcune risposte a domande precedenti? – micha

+0

@micha grazie per avermelo ricordato;) – zfranciscus

+0

"crea sicurezza intorno a questa cartella" - che tipo di "sicurezza" avevi in ​​mente? Cosa è permesso e cosa no? –

risposta

7

Se si utilizza Primavera di sicurezza si potrebbe aggiungere qualcosa di simile per il file di contesto Primavera (s):

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

che sembra fantastico. Ciò significa tuttavia che solo gli utenti che sono stati autenticati possono visualizzare un'immagine? Se è così, allora potrei finire con un sito web senza immagini. Mi piacerebbe ancora che il pubblico veda le immagini. – zfranciscus

+2

In realtà isAuthenticated() è una delle espressioni disponibili, apparentemente nel tuo caso dovresti usare "permitAll". Qui puoi trovare tutte le espressioni supportate da Spring Security: [Controllo dell'accesso basato su espressioni] (http://static.springsource.org/spring-security/site/docs/3.0.x/reference/el-access.html). – izilotti

2

Non c'è alcun motivo particolare per limitare l'accesso alle risorse statiche.

Dato che la struttura delle directory è ben definita e l'ordinamento dei file è semantico (ovvero la cartella img_resources conterrà solo le immagini), è necessario consentire l'accesso a tali risorse o addirittura ignorare del tutto i filtri per evitare il sovraccarico del passaggio attraverso la catena dei filtri , ad esempio:

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

dal Spring Security tutorial:

preferiremmo non avere risorse statiche processati entro la primavera del I filtri di sicurezza a tutti. Per ottenere ciò, è possibile aggiungere un ulteriore <http> blocco che si applica solo a un modello specifico. Questo deve essere prima del blocco esistente, in quanto si applica a un modello specifico. Se non viene fornito alcun attributo modello , il blocco si applica a qualsiasi richiesta.

Problemi correlati