我已经使用 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);
}
}
由于我们在做代码整合,我们需要暂时关闭认证。但是,我尝试了以下方法,但似乎没有任何效果。当我点击这些 rest api url 时,我仍然收到 401。
@Configuration
, @EnableWebSecurity
.在 Spring boot Security Disable security ,建议在底部添加 @EnableWebSecurity
将禁用身份验证,我认为这没有任何意义。反正试过了,没用。 http
.authorizeRequests()
.anyRequest().permitAll();
Disable Basic Authentication while using Spring Security Java configuration .也没有帮助。
@EnableAutoConfiguration(排除 = {
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration.class})
就像他们在 disabling spring security in spring boot app 中所做的一样.但是我认为此功能仅适用于
spring-boot-actuator
我没有。所以没有尝试这个。禁用 Spring 安全的正确方法是什么?
最佳答案
正如@Maciej Walkowiak 提到的,你应该为你的主类做这个:
@SpringBootApplication(exclude = org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class)
public class MainClass {
关于spring - 如何在 Spring Boot 应用程序中关闭 Spring Security,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40228036/