2016-10-27 21 views
0

私はSpringプロジェクトに取り組んでいます。機能はすでに完了しています。不足しているのはセキュリティコンテキストです。 私のプロジェクト(maven)は異なるサブプロジェクト(Services、RestControllers、Domain)に分かれているので、セキュリティ設定を独立したサブプロジェクトにしたいので、メインアプリケーションに依存関係として追加するだけで起動できます。Springセキュリティの設定が適用されない

私は、今では、セキュリティのサブプロジェクトで唯一のクラスである非常に基本的な構成、使用を開始

:私は私のメインのアプリに依存関係としてこのプロジェクトを追加するとすぐに

@Configuration 
@EnableWebSecurity 
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { 

    @Override 
    public void configure(AuthenticationManagerBuilder auth) throws Exception { 
    auth.inMemoryAuthentication() 
     .withUser("admin") 
     .password("admin1") 
     .roles("ADMIN", "USER"); 
    } 

    @Override 
    public void configure(HttpSecurity http) throws Exception { 
    http.csrf().disable(); 
    http.authorizeRequests().antMatchers("/").permitAll().and().authorizeRequests().anyRequest().authenticated(); 
    } 
} 

、セキュリティデフォルトのスプリングログインダイアログがポップアップするので、コンテキストが明らかにアクティブになります。問題は、私がSecurityConfigurationで定義した設定をSpringが無視していることです。それは私に '/'にアクセスすることもできません。あるいは、それは私に定義されたユーザーとのログインを許可しません。デバッグモードでチェックインすると、public void configure(AuthenticationManagerBuilder auth)メソッドを実行することはありません。

ナットシェルで: これはスプリングセキュリティコンテキストをアクティブにしますが、私の設定には適用されません。何故ですか?あなたのApplicationConfigurationへのJavaベースの設定のインポートSecurityConfigurationとSpring MVCのプロジェクトの場合は

答えて

0

@EnableWebMvc 
@Configuration 
@ComponentScan({"xx.xxx.xx.*"}) 
@PropertySource("classpath:xxx.properties") 
@Import(value = {SecurityConfiguration.class}) // <= like this 
public class ApplicationConfiguration extends WebMvcConfigurerAdapter { ... } 

またSecurityInitializerが必要な場合があります。このクラスは空でも存在する必要があります。これは、セキュリティ設定の前に実行する必要のある特定のフィルタに適しています。

import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; 

public class SecurityInitializer extends AbstractSecurityWebApplicationInitializer { } 
関連する問題