turns-00007.parquet:16723
0a68f3c750fd2845ae851254
turn 9/9gpt-3.5-turbo-0613RussianRussia205 words
degenerate_repetitionAbsentFinal dense release
USER
Как настроить Spring Security для Rest-сервиса, взаимодействовать с которым будет фронт на js + angular?
ASSISTANT
Для настройки Spring Security для REST-сервиса, взаимодействие с фронтендом на JavaScript и Angular, вы можете использовать следующий подход:
1. Добавьте зависимость Spring Security в ваш файл `pom.xml`. Например:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
```
2. Создайте класс конфигурации для Spring Security. Ниже приведен пример класса `SecurityConfig`, где мы настраиваем аутентификацию и авторизацию:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/api/public/**").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER");
}
}
```
В этом примере все запросы к `/api/public/**` будут разрешены без аутентификации, в то время как остальные запросы требуют аутентификации. Для аутентификации используется in-memory пользователь с именем "user" и паролем "password".
3. Настройте CORS (Cross-Origin Resource Sharing) для разрешения запросов от фронтенда на другом домене. Добавьте следующий код в класс конфигурации:
```java
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.addAllowedHeader("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(source);
}
}
```
Этот конфигурационный класс разрешает CORS для всех методов, заголовков и источников, чтобы фронтенд на другом домене мог