如何禁用spring-security登录界面?

时间:2014-05-13 16:09:12

标签: java spring spring-security vaadin spring-boot

我使用spring-boot-starter-security依赖项来使用spring-security附带的几个类。但是,由于我想将它集成到现有的vaadin应用程序中,我只想使用这些类,而不是使用spring的默认登录/身份验证屏幕。

如何禁用此屏幕?

我不能通过将WebSecurityConfigurerAdapter扩展为我的主要入门类extends SpringBootServletInitializer来进行任何配置。此外,vaadin应用程序基本上始终在相同的URL路径上运行,并使用内部导航。

@EnableAutoConfiguration
public class MyApp extends SpringBootServletInitializer { 

        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(MyApp.class);
        }

        public static void main(String[] args) {
            SpringApplication.run(MyApp.class, args);
        }
}

那么,我该如何禁用登录界面,但是虽然使用了弹簧安全功能?

7 个答案:

答案 0 :(得分:21)

你可以使用这样的基于java的配置:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity security) throws Exception
    {
     security.httpBasic().disable();
    }
}

如果应用程序自动刷新,请重新启动它。

答案 1 :(得分:5)

Spring Boot中的默认安全性是Basic。您可以通过设置security.basic.enabled=false来停用它。有关此herehere的更多信息。

答案 2 :(得分:1)

如果仍然需要解决方案,请在REST控制器中放置一个方法,如下所示:

@RestController
public class myRestController{

    @GetMapping("/login")
    public String redirectTo(){
        return "yourRedirectLink";
    }

}

此解决方案非常适合与弹簧一起使用,并且可以装在罐中进行反应

答案 3 :(得分:0)

似乎有一个更简单的解决方案。

只需将此注释放在您的主类上方或与SpingBootApplication注释相同的地方

@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})

答案 4 :(得分:0)

要完全禁用登录路由,请使用Spring Security配置对象

以下代码段使用org.springframework.boot:2.1.6.RELEASE

@Configuration
@EnableWebSecurity
class SecurityConfig : WebSecurityConfigurerAdapter() {
  override fun configure(security: HttpSecurity) {
    super.configure(security)

    security.httpBasic().disable()

    security.cors().and().csrf().disable().authorizeRequests()
      .anyRequest().authenticated()
      .and().formLogin().disable() // <-- this will disable the login route
      .addFilter(JWTAuthorizationFilter(authenticationManager()))
      .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
  }

  @Bean
  fun corsConfigurationSource(): CorsConfigurationSource {
    val source = UrlBasedCorsConfigurationSource()
    val config = CorsConfiguration().applyPermitDefaultValues()
    config.addExposedHeader("Authorization")
    source.registerCorsConfiguration("/**", config)
    return source
  }
}

答案 5 :(得分:0)

@SpringBootApplication(exclude={SecurityAutoConfiguration.class})

答案 6 :(得分:-1)

通过从自动配置中排除默认的弹簧安全性来禁用它。将SecurityAutoConfiguration.class添加到主类上exclude批注的@SpringBootApplication属性中。如下所示:

@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}