2015-04-02 12 views
9

Ho un progetto con spring-security e PrimeFaces e ho ricevuto un errore quando eseguo il mio progetto.Dopo il login di Spring Security, vengo reindirizzato a una risorsa CSS/JS invece di una pagina HTML

questo URL appaiono sempre /javax.faces.resource/primefaces.js.xhtml?ln=primefaces&v=5.1

Questo accade, quando ho sovrascrivere questo metodo:

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.csrf().disable(); 
    http.authorizeRequests() 
     .anyRequest().authenticated() 
     .and() 
     .formLogin().loginPage("/login.xhtml") 
     .permitAll(); 
} 

e mettere la mia pagina di login. Tuttavia il mio web.xml chiamare la pagina home.xhtml

<welcome-file-list> 
    <welcome-file>home.xhtml</welcome-file> 
</welcome-file-list> 

Questo è ciò che si presenta è this:

enter image description here

+0

E l'errore è ...? – tnw

+0

L'erro è che la pagina con tutti i css /javax.faces.resource/primefaces.js.xhtml?ln=primefaces&v=5.1 mostra invece la mia home.xhtml –

+0

Cosa succede quando vai a 'home.xhtml'? – DavidS

risposta

12

Il login per impostazione predefinita reindirizzare l'ultima risorsa limitata richiesta del sessione HTTP corrente. Apparentemente hai (inconsapevolmente) anche le risorse JS/CSS/image covered di pagine HTML generate da JSF come risorse limitate. Quando la stessa pagina di login si riferisce esattamente a quel file JavaScript, allora sarebbe ricordata come ultima risorsa riservata richiesta e Spring Security la reindirizzerebbe ciecamente ad esso dopo il login riuscito.

È necessario dire a Spring Security di escluderli da risorse riservate. Un modo sarebbe aggiungere la riga sottostante al file di configurazione XML di Spring Security.

<intercept-url pattern="/javax.faces.resource/**" filters="none"/> 

Un altro modo sarebbe quello di ignorare SecurityConfig#configure(WebSecurity).

@Override 
public void configure(WebSecurity web) throws Exception { 
    web.ignoring().antMatchers("/javax.faces.resource/**"); 
} 

Questo dovrebbe anche risolvere immediatamente tutti i CSS/JS/immagini rotti sulla pagina di login in sé (che si dovrebbe aver notato controllando incorporato monitorare il traffico HTTP del browser e/o console JS il caricamento della pagina di login).

+1

Come faccio questo con le annotazioni? Perché non ho questo file di configurazione spring-xml. –

+0

Ho anche scoperto che l'ordine è importante. È necessario disporre di antMatcher che consente l'accesso a tali risorse per essere il primo nella configurazione. – Pytry

+0

questa dovrebbe essere la risposta accettata. È possibile, tuttavia, limitare l'accesso alle risorse Javascript (anche per ragioni di sicurezza), ma evitare questo reindirizzamento? –

Problemi correlati