Я создаю веб-сайт, используя пружинную загрузку для внутреннего интерфейса, и реагирую на внешний интерфейс.
Внешний конец и внутренний конец хранятся в разных хранилищах git, и при развертывании на сервере они объединены вместе.
Прямо сейчас реакция может получить информацию из серверной части без проблем, я просто добавил прокси в пакет. json с localhost: 8080, и все в порядке.
Я настроил Spring Security, создал свою собственную реализацию userdetails, и все работает с внутренних URL-адресов (если они начинаются с localhost: 8080), я создал компонент в React для входа в систему и выставил apli c apis, а теперь я ' У меня возникли проблемы.
На внутренней стороне я установил источник cors, чтобы разрешать запросы, поступающие от реакции.
В конфигурации Spring Security у меня есть следующее:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.csrf().disable()
//LOGIN
.formLogin()
.permitAll()
.loginProcessingUrl( "/api/login")
.passwordParameter("password")
.usernameParameter("username")
.defaultSuccessUrl("http://localhost:3000/projects", true)
.failureUrl("http://localhost:3000/users/login")
//LOGOUT
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout", "GET"))
.clearAuthentication(true)
.invalidateHttpSession(true)
.deleteCookies("JSESSIONID")
.logoutSuccessUrl("http://localhost:3000/users/login")
.and()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/index*", "/static/**", "/*.js", "/*.json", "/*.ico").permitAll()
.anyRequest()
.authenticated();
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/*")
.allowedOrigins("*")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("Content-Type", "X-Requested-Width","accept", "Origin","Authorization", "Access-Control-Request-Method", "Access-Control-Allow-Methods", "Access-Control-Request-Headers")
.exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Allow-Credentials")
.allowCredentials(true)
.maxAge(3600);
}
После нескольких попыток в лучшем случае я могу получить 200 OK от внешнего интерфейса, но я не перенаправлен на успешный URL, в то время как учетные данные неправильно он перенаправляет на URL-адрес ошибки.
Есть идеи? Спасибо