Spring Security不会拦截请求

时间:2019-02-12 10:03:41

标签: spring spring-security

我有一个遗留应用程序,其中添加了Spring Web MVC库以公开新的Rest API。

我正在努力集成spring-security以拦截传入的请求。我已经建立了一个安全配置类

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth
        .inMemoryAuthentication()
            .withUser("user").password("password").roles("USER");
}


@Override
protected void configure(HttpSecurity http) throws Exception {
      http.csrf().disable().authorizeRequests().anyRequest().authenticated().and().httpBasic();

   }
}

和安全应用程序初始化程序

public class SecurityWebApplicationInitializer extends   
 AbstractSecurityWebApplicationInitializer {
 }

遵循相关指南。

使用调试器,我验证了在初始化我的配置类时已加载。我的问题是我的请求没有按预期被拦截。

2 个答案:

答案 0 :(得分:0)

由于您已经在使用Spring MVC,请转到用于初始化应用程序的类。如果您使用的是Java Config,它很可能会扩展AbstractAnnotationConfigDispatcherServletInitializer

将您的SecurityConfig添加到其“根配置类”:

public class MySpringMmvcInitializer extends 
AbstractAnnotationConfigDispatcherServletInitializer {

    ...

    @Override
    protected abstract Class<?>[] getRootConfigClasses() {
        return new Class[] { ..., SecurityConfig.class};
    }
}

答案 1 :(得分:0)

我认为您忘记了@configuration注释,请尝试

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
public void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth
        .inMemoryAuthentication()
            .withUser("user").password("password").roles("USER");
}


@Override
protected void configure(HttpSecurity http) throws Exception {
      http.csrf().disable().authorizeRequests().anyRequest().authenticated().and().httpBasic();

   }
}