У меня есть бэкэнд Spring Boot и интерфейс на основе Angular 5. Я хочу сделать аутентификацию и авторизацию с помощью Spring Security.Я хочу, чтобы форма входа была настроена в Angular (http://localhost:4200/login).. Я хочу, чтобы пользователи, их пароли и роли находились в базе данных. Я не могу понять, как сказать Spring, что страница входа находится в другом домене (всторона интерфейса). Должен ли я определить / login в классе RestController или в Spring Security по умолчанию есть / login, который позволяет пользователям проходить аутентификацию? Пожалуйста, помогите.
я начал с тестовой конфигурации: пользователи впамять:
package smart.syndic.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
{
auth.inMemoryAuthentication()
.withUser("admin").password("1234")
.roles("ADMIN");
}
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder()
{
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/login/**", "/administrateurs/**").permitAll()
.and()
.authorizeRequests().antMatchers(HttpMethod.GET, "/users").permitAll()
.and()
.exceptionHandling().accessDeniedPage("/forbidden")
.and()
.authorizeRequests().anyRequest().authenticated();
}
}