Ответ 1
Безопасность по умолчанию в Spring Boot - Basic. Вы можете отключить его, установив security.basic.enabled=false
. Подробнее об этом здесь и здесь.
Я использую зависимость spring-boot-starter-security
, чтобы использовать несколько классов, которые поставляются с spring-security
. Но поскольку я хочу интегрировать его в существующее приложение vaadin
, я хочу использовать только классы, а не экран входа/авторизации по умолчанию весны.
Как отключить этот экран?
Я не могу создавать какие-либо конфигурации, расширяя 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);
}
}
Итак, что я могу сделать, чтобы отключить экран входа в систему, но хотя использовать функции безопасности Spring?
Безопасность по умолчанию в Spring Boot - Basic. Вы можете отключить его, установив security.basic.enabled=false
. Подробнее об этом здесь и здесь.
вы можете использовать java-конфигурацию следующим образом:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity security) throws Exception
{
security.httpBasic().disable();
}
}
и перезагрузите приложение, если оно обновляется автоматически.
Если кому-то все еще нужно решение, поместите метод в контроллер REST следующим образом:
@RestController
public class myRestController{
@GetMapping("/login")
public String redirectTo(){
return "yourRedirectLink";
}
}
Это решение очень хорошо для работы с пружиной и реакции, упакованное в банку
Кажется, есть более простое решение.
Просто поместите эту аннотацию над вашим основным классом или там же, где и ваша аннотация SpingBootApplication
@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})
Чтобы полностью отключить маршрут входа, используйте объект конфигурации 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
}
}
Отключите функцию безопасности по умолчанию, исключив ее из автоконфигурации. Добавить SecurityAutoConfiguration.class
в exclude
имущества @SpringBootApplication
аннотацию на вашем главном классе. Например:
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}