Spring Boot с Spring Security и вход в React App вне проекта Spring - PullRequest
1 голос
/ 19 апреля 2020

Я создаю веб-сайт, используя пружинную загрузку для внутреннего интерфейса, и реагирую на внешний интерфейс.

Внешний конец и внутренний конец хранятся в разных хранилищах 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-адрес ошибки.

Есть идеи? Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...