我正在尝试配置Spring Boot Security以允许匿名用户访问除一个以外的所有URL。默认情况下,用户和Spring生成的安全密码。 维护申请只需要一页 我已经尝试了很多技巧和教程。
还有其他人。
但是Spring仍然需要对所有页面进行身份验证。
我当前的安全配置
@EnableWebSecurity
@Configuration
public class SecurityConf extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.authorizeRequests()
.anyRequest()
.anonymous()
.antMatchers("/secure")
.authenticated();
}
}
网络配置
@Configuration
@EnableWebMvc
@EnableAsync
public class WebConf implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
WebMvcConfigurer.super.addResourceHandlers(registry);
registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/**");
}
@Bean
public Executor asyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(5);
executor.setQueueCapacity(500);
executor.setThreadNamePrefix("Asynchronous Process-");
executor.initialize();
return executor;
}
}
和主要方法
@ComponentScan
@SpringBootApplication
@EnableScheduling
public class MainServiceApplication {
public static void main(String[] args) {
SpringApplication.run(MainServiceApplication.class, args);
}
}
我尝试过
.permitAll()
.anonymous()
没有成功。
编辑1
项目结构
编辑2
@ComponentScan()
@SpringBootApplication
@EnableScheduling
public class MainServiceApplication {
public static void main(String[] args) {
SpringApplication.run(MainServiceApplication.class, args);
}
}
由移动配置包解决。 Spring没有扫描配置包。
答案 0 :(得分:1)
您可能需要更改顺序。可能的问题是antMatchers("/secure").authenticated()
无效,因为在anyRequest()
中将考虑 / secure 端点。还要确保SecurityConf
装在扫描所需的正确包装中。
@EnableWebSecurity
@Configuration
public class SecurityConf extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.authorizeRequests()
.antMatchers("/secure").authenticated()
.anyRequest().anonymous();
}
}
OR
@EnableWebSecurity
@Configuration
public class SecurityConf extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.authorizeRequests()
.antMatchers("/secure").authenticated()
.anyRequest().permitAll();
}
}
更新
您需要在cz.lh.main_service
和SecurityConf
内创建一个 configs 包,并且WebConf
应该是cz.lh.main_service.configs
OR
您可以使用@ComponentScan
并指定包含SecurityConf
和WebConf
的当前软件包
@ComponentScan(“your-config-package”)