如何在Spring Boot应用程序中关闭Spring Security
我已经在具有Spring Security的Spring Boot应用程序中实现了身份验证。
控制身份验证的主要类应为websecurityconfig:
@Configuration@EnableWebSecurity
@PropertySource(value = { "classpath:/config/application.properties" })
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private RestAuthenticationSuccessHandler authenticationSuccessHandler;
@Autowired
private RestAuthenticationEntryPoint restAuthenticationEntryPoint;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic()
.and()
.csrf().disable()
.sessionManagement().sessionCreationPolicy(
SessionCreationPolicy.STATELESS)
.and()
.exceptionHandling()
.authenticationEntryPoint(restAuthenticationEntryPoint)
.and()
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/login").permitAll()
.antMatchers("/logout").permitAll()
.antMatchers("/ristore/**").authenticated()
.anyRequest().authenticated()
.and()
.formLogin()
.successHandler(authenticationSuccessHandler)
.failureHandler(new SimpleUrlAuthenticationFailureHandler());
}
因为我做的OAuth,我有AuthServerConfig
和ResourceServerConfig
也。我的主要应用程序类如下所示:
@SpringBootApplication@EnableSpringDataWebSupport
@EntityScan({"org.mdacc.ristore.fm.models"})
public class RistoreWebApplication extends SpringBootServletInitializer
{
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*");
}
};
}
public static void main( String[] args )
{
SpringApplication.run(RistoreWebApplication.class, args);
}
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(RistoreWebApplication.class);
}
}
由于我们正在执行代码合并,因此我们需要暂时关闭身份验证。但是,我尝试了以下方法,但似乎没有任何效果。当我点击这些其他api URL时,我仍然得到401。
注释掉与安全相关的类中的所有注释,包括
@Configuration
,@EnableWebSecurity
。在Spring boot Security Disable security中,建议在底部添加@EnableWebSecurity
将DISABLE auth,我认为这没有任何意义。无论如何尝试过,没有用。通过删除所有安全性内容来修改websecurityconfig,仅这样做
http .authorizeRequests() .anyRequest().permitAll();
使用Spring SecurityJava配置时禁用基本身份验证。也无济于事。
- 删除安全性自动配置
@EnableAutoConfiguration(排除=
{org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration.class})
就像他们在spring boot app中禁用springsecurity一样。但是我认为此功能仅适用于spring-boot-actuator
我没有的功能。所以不要尝试这个。
禁用Spring Security的正确方法是什么?
回答:
正如@Maciej Walkowiak所提到的,您应该在您的主类中这样做:
@SpringBootApplication(exclude = org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class)public class MainClass {
以上是 如何在Spring Boot应用程序中关闭Spring Security 的全部内容, 来源链接: utcz.com/qa/436415.html