Я добавил Spring Security в свой проект и пытаюсь выполнить аутентификацию пользователя. Я использую CrudRepository для поиска пользователя и проверки правильности данных. Я смог заставить его работать, используя пружины со страницы входа в систему. Моя проблема в том, что я хочу аутентифицировать пользователя через мою страницу входа в систему. Приложение загрузки Spring находится на 8080, а приложение реакции - 3000. Я видел настраиваемые страницы входа в систему, но страница входа находилась в том же месте, что и приложение загрузки весны. Мой вопрос: возможно ли, чтобы страница входа в систему находилась где-то еще, есть ли знак в конечной точке, на которую я могу отправить свой запрос для аутентификации пользователя? Или есть какой-то конфиг, который я могу добавить, чтобы сказать Spring, чтобы использовать пользовательские данные, поступающие из внешнего интерфейса, для аутентификации пользователя.
На стороне, которую я не понимаю, NoOpPasswordEncoder не следует использовать, это всего лишь PO C, и он не будет запущен в производство. Спасибо
Мой файл конфигурации безопасности выглядит следующим образом:
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService)
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/**").hasRole("ADMIN")
.and()
.formLogin();
}
@Bean
public PasswordEncoder getPasswordEncoder(){
return NoOpPasswordEncoder.getInstance();
}
UserDetailsServiceImpl:
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
private UserRepository userRepository;
public UserDetailsServiceImpl(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
Optional< UserEntity > user= userRepository.findByEmail(email);
user.orElseThrow(()-> new UsernameNotFoundException("Not found: " + email));
return user.map(UserInfo::new).get();
}
}
UserDetailsImpl
public class UserInfo implements UserDetails {
private String userName;
public UserInfo(UserEntity userEntity){
this.userName=userEntity.getEmail();
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return Arrays.asList(new SimpleGrantedAuthority("ADMIN"));
}
@Override
public String getPassword() {
return "TestPassword";
}
@Override
public String getUsername() {
return userName;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
Журнал безопасности Spring:
Создание цепочки фильтров: любой запрос, [org.springframework.security.web.context.request.asyn c. WebAsyncManagerIntegrationFilter@4529048e , org.springframework.security.web.context. SecurityContextPersistenceFilter@c247b02, org.springframework.security.web.header. HeaderWriterFilter@ecfff32, org.springframework.web.filter. CorsFilter@6addfa22, org.springframework.security.web.csrf . CsrfFilter@629cf53c, org.springframework.security.web.authentication.logout. LogoutFilter@7b38db21, org.springframework.security.web.authentication. UsernamePasswordAuthenticationFilter@3b18009f, org.springframework.security.web.savedrequest. RequestCacheAwareFilter@78f1d29, org .springframework.security.web.servletapi. SecurityContextHolderAwareRequestFilter@15405ba1, org.springframework.security.web.authentication. AnonymousAuthenticationFilter@74b521c, org.springframework.security.web.session. SessionManagementFilter@3c65f2e1, org.springframework.security.web.access . ExceptionTranslationFilter@531b1778, org.springframework.security.web.access.intercept. FilterSecurityInterceptor@458704ee]