2016-09-08 2 views
0

Ich versuche Spring Boot 1.4 und Thymeleaf 2. Ich möchte meine Anwendung sichern. Dies ist meine Sicherheitskonfiguration:Spring Boot 1.4 und Thymeleaf 2 Sicherheit

@Configuration 
@EnableWebSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/", "/resources/static/**").permitAll() 
       .anyRequest().authenticated() 
       .and() 
      .formLogin() 
       .loginPage("/login") 
       .permitAll() 
       .and() 
      .logout() 
       .permitAll(); 
    } 
} 

Das ist mein MVC-Controller:

@Configuration 
public class MvcConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/index").setViewName("index"); 
     registry.addViewController("/").setViewName("index"); 
     registry.addViewController("/login").setViewName("login"); 
    }  
} 

aber wenn ich versuche, localhost:8080 zuzugreifen es zeigt, Index-Seite ohne CSS, js! Wenn ich mich manuell über localhost:8080/login.html anmelde funktioniert alles OK. Ich gehorche der Konvention von Spring - Thymeleaf Integration und statische Ressourcen sind unter /resources/static und Vorlagen unter /resource/templates.

Was ist der fehlende Punkt für mich?

EDIT:

Es arbeitet mit dieser Art und Weise:

http 
     .authorizeRequests() 
      .antMatchers("/css/**").permitAll() 
      .antMatchers("/js/**").permitAll() 
      .anyRequest().authenticated() 
      .and() 
     .formLogin() 
      .loginPage("/login") 
      .permitAll() 
      .and() 
     .logout() 
      .permitAll(); 

Allerdings sollte ich hinzufügen alle Ordner unter statischen Ressourcen mit dieser Art und Weise? Es scheint, ich vermisse etwas.

+0

Es ist seltsam, aber es funktioniert ohne weitere Konfiguration, wenn Sie Ihre css und js Dateien in 'src/main/resources/static/resources' setzen – baao

Antwort

1

Sie sollten CSS und Javascript-Dateien in den src/main/webapp

Jetzt ist Ihre Struktur ist wie folgt gegeben:

webapp 
|__css/myStyles.css 
|__js/myjs.js 
|__images/myImage.gif 
|__WEB-INF 

diese Konfiguration zu Ihrer Sicherheit hinzufügen

@Override 
public void configure(WebSecurity security) { 
    security.ignoring().antMatchers("/css/**", "/fonts/**", "/libs/**", "/js/**", "/images/**"); 
} 
+0

Sollte ich alle Ordner eins nach dem anderen hinzufügen? Ich denke, ich könnte einen Platzhalter verwenden, da statische Dateien im 'Ressourcen'-Ordner abgelegt werden, ist die Konvention für Spring-Thymeleaf. – kamaci

+0

Wenn Sie einen Ressourcenordner unter Webapps erstellen und alle diese Ordner darin hinzufügen, sollte auch das Hinzufügen von "/ recources/**" in antMatchers funktionieren. – GreyGoose

+0

Nein, sollte es nicht. Auf Ressourcen wird über '/ css','/js' usw. zugegriffen, wenn Sie von der Benutzeroberfläche aus zugreifen, auch wenn es sich um Orte unter Ressourcen handelt. Spring fängt gemäß den berechneten URLs ab (auf sie wird nicht über den Pfad von '/ static' zugegriffen, auch wenn sie sich unter diesem Ordner befinden. Sie wurde ausgeblendet, wenn Sie die UI ausführen). – kamaci

Verwandte Themen