2016-09-08 5 views
0

私はSpring Boot 1.4とThymeleaf 2を試しています。アプリケーションを保護したいと思います。これは私のセキュリティの設定です:Spring Boot 1.4とThymeleaf 2のセキュリティ

@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(); 
    } 
} 

これは私のMVCコントローラである:私はlocalhost:8080にアクセスしようとすると、

@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"); 
    }  
} 

は、しかし、それは、JS、CSSなしインデックス・ページを示しています! localhost:8080/login.htmlで手動でログインするとすべて正常に動作します。私はSpringのコンベンションに従います - Thymeleafインテグレーションと静的リソースは/resources/static、テンプレートは/resource/templatesです。

私の欠点は何ですか?

EDIT:

それはこの方法で動作します:

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

はしかし、私はこの方法で静的リソースの下にあるすべてのフォルダを追加する必要がありますか?私は何かが恋しいと思う。

+0

それは奇妙だが、それは動作しますあなたのcssファイルとjsファイルを 'src/main/resources/static/resources'に置いたときにさらに設定する必要はありません – baao

答えて

1

あなたはにCSSやJavaScriptファイルを追加する必要がありsrc/main/webapp

次のように今、あなたの構造を与えられている:

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

は、セキュリティ設定にこれを追加

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

すべてのフォルダを1つずつ追加してください。 'resources'フォルダの下に静的ファイルを置くのはspring-thymeleafのための規約なので、ワイルドカードを使うことができると思います。 – kamaci

+0

webappsの下にresourcesフォルダを作成し、これらのフォルダをすべてそれらのフォルダに追加すると、antMatchersに "/ recources/**"を追加するだけで動作するはずです。 – GreyGoose

+0

いいえ、そうしてはいけません。リソースは '/ css'、'/js'などを介してアクセスされます。リソースの下にあってもUIからアクセスするとリソースにアクセスします。 Springは計算されたURLに基​​づいてインターセプトします(それらはそのフォルダの下にあっても '/ static'のパスではアクセスされませんが、UIを実行すると隠されてしまいます)。 – kamaci

関連する問題