Для быстрой разработки Frontend (React) работает на порту 3000. Запрос CORS работает хорошо. У меня проблема с аутентификацией из внешнего интерфейса:
У меня просто не будет успешной аутентификации при запуске реакции frontend.localhost: 3000 .
не используйте Spring-mvc.
сервер успешный интерфейс wenn также на 8080 порте.
HTTP/1.1 302
Set-Cookie: JSESSIONID=8AA9C90B5599372059183C6D94798609; Path=/; HttpOnly
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Location: http://localhost:8080/
Content-Length: 0
Date: Fri, 05 Oct 2018 17:26:41 GMT
серверный ответ сбой wenn frontend на порт 3000.
HTTP/1.1 302
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Set-Cookie: JSESSIONID=6AE3EA77D7786281DE5F2E9FE2EC2A31; Path=/; HttpOnly
Location: http://localhost:8080/
Content-Length: 0
Date: Fri, 05 Oct 2018 17:30:53 GMT
###ДОПОЛНИТЕЛЬНЫЙ: Так что найду решение самостоятельно. 3 дня и 5 строк кода * ( исправление проблемы перенаправления:
<code>
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
//allow not authenticated user access to login page
.antMatchers("/login").permitAll()
//give access all users to React resources
.antMatchers("/static/**").permitAll()
.anyRequest().authenticated()
//enable redirect to login if user not authenticated
.and().formLogin().successHandler(corsAuthSuccessHandler()).loginPage("/login")
.and().csrf().disable();
}
@Bean
public AuthenticationSuccessHandler corsAuthSuccessHandler() {
return new SimpleUrlAuthenticationSuccessHandler() {
@Override
protected String determineTargetUrl(HttpServletRequest request,HttpServletResponse response) {
if (request.getHeader("Origin").equals(frontEndDevDomain))
return request.getHeader("Origin");
return super.determineTargetUrl(request, response);
}
};
//Cors header allover:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins(frontEndDevDomain)
.allowCredentials(true);
}
};
}
</code>
Из внешнего интерфейса после входа в систему каждый запрос будет CORS, если вы используете fetch, просто добавьте учетные данные строки: 'include'
Например: fetch(URL + '/api/company/add/?name=' + name, {method: 'POST', credentials: 'include'})
Конечно. Я только что добавил спецификацию.
В чем тут вопрос?
@HasanCanSaral, как настроить разработку проекта, если бэкэнд не работает с внешним интерфейсом на другом порту (а именно аутентификация)? это занимает слишком много времени, чтобы собрать внешний интерфейс и перезапустить очень много времени.
@HasanCanSaral работает хорошо, кроме аутентификации.
Я предполагаю, что проблема вызвана политикой cors на стороне клиента. Может помочь добавление некоторых параметров в ваш вызов ajax. Если вы используете пример apifor выборки, попробуйте включить учетные данные: «включить» в параметры запроса.
надеюсь это поможет.
Спасибо . ты прав . перенаправление после входа на исходный сервер и запрос внешнего интерфейса с учетными данными.
Можете ли вы более конкретно рассказать о проблемах, с которыми вы сталкиваетесь? Вы используете Spring MVC с Spring Boot? Как вы проходите аутентификацию и как реагирует ваш бэкэнд?