如何将Spring WebSecurityConfig添加到现有项目

我想将一个简单的配置添加到现有的Spring REST

api项目中,以便WebSecurityConfigurerAdapter对其进行测试。但是当spring启动时,它不会加载配置。也许我需要将其添加到应用程序上下文中,但是我不知道该怎么做。

如果我curl

localhost:8080/总是得到未经授权的响应,那么我认为这不是加载配置,为什么呢?或者,我应该如何加载它?在我在github上看到的所有不同项目中,他们从不做任何特殊的事情来加载它!可能是因为其首先加载了嵌入的servlet?

这是简单的Web安全配置:

@SuppressWarnings("SpringJavaAutowiringInspection")

@Configuration

@EnableWebSecurity

@EnableGlobalMethodSecurity(prePostEnabled = true)

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired

private UserDetailsService userDetailsService;

@Autowired

public void configureAuthentication(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {

authenticationManagerBuilder

.userDetailsService(this.userDetailsService)

.passwordEncoder(passwordEncoder());

}

@Bean

public PasswordEncoder passwordEncoder() {

return new BCryptPasswordEncoder();

}

@Override

protected void configure(HttpSecurity httpSecurity) throws Exception {

httpSecurity

// we don't need CSRF because our token is invulnerable

.csrf().disable()

// don't create session

.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()

.authorizeRequests()

//.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()

// allow anonymous resource requests

.antMatchers(

HttpMethod.GET,

"/",

"/*.html",

"/favicon.ico",

"/**/*.html",

"/**/*.css",

"/**/*.js",

"/**"

).permitAll()

.antMatchers("/auth/**").permitAll()

.anyRequest().authenticated();

// disable page caching

httpSecurity.headers().cacheControl();

}

}

这是我的申请

@Configuration

@EnableConfigurationProperties

@ComponentScan(basePackageClasses = SimpleCORSFilter.class)

@EnableAutoConfiguration org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration.class})

@EntityScan(basePackages = "com.thing.model")

@RestController

public class Application {

@Bean

public FilterRegistrationBean filterRegistrationBean() {

FilterRegistrationBean registrationBean = new FilterRegistrationBean();

CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();

registrationBean.setFilter(characterEncodingFilter);

characterEncodingFilter.setEncoding("UTF-8");

characterEncodingFilter.setForceEncoding(true);

registrationBean.setOrder(Integer.MIN_VALUE);

registrationBean.addUrlPatterns("/*");

return registrationBean;

}

public static void main(String[] args) {

SpringApplication application = new SpringApplication(Application.class);

SpringApplication.run(Application.class, args);

}

@RequestMapping("/")

public String home() {

return "Hello World";

}

       <dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-tomcat</artifactId>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

<dependency>

<groupId>org.geotools</groupId>

<artifactId>gt-referencing</artifactId>

<version>8.2</version>

<type>jar</type>

</dependency>

<dependency>

<groupId>org.jsoup</groupId>

<artifactId>jsoup</artifactId>

<version>1.7.2</version>

<type>jar</type>

</dependency>

<dependency>

<groupId>org.postgresql</groupId>

<artifactId>postgresql</artifactId>

<version>9.3-1102-jdbc41</version>

</dependency>

<dependency>

<groupId>org.yaml</groupId>

<artifactId>snakeyaml</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-security</artifactId>

</dependency>

回答:

我需要将WebSecurityConfig添加到应用程序上下文中,并在主类声明中添加以下行:

...

@Import(WebSecurityConfig.class)

public class Application {

...

我做的另一件事是将SpringBoot升级到1.4.3.RELEASE主应用程序并将其放置到根文件夹中:

 <parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.4.3.RELEASE</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

该树将是例如:

└── com

└── app

├── Application.java

└── config

└── WebSecurityConfig.java

这将自动加载所有@Configuration子文件夹。

以上是 如何将Spring WebSecurityConfig添加到现有项目 的全部内容, 来源链接: utcz.com/qa/413611.html

回到顶部