Аутентификация безопасности по умолчанию при начальной загрузке с другого порта - PullRequest
0 голосов
/ 04 октября 2018

Для быстрой разработки Frontend (React) работает на порте 3000. Запрос CORS работает хорошо.
У меня проблема с аутентификацией из интерфейса:

  • Небольшая проблема 1 - перенаправление на порт 8080
  • большая проблема 2 в том, что аутентификация прошла успешно, но на порту 8080

У меня просто не будет успешной аутентификации при запуске реакции 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: <a href="http://localhost:8080/" rel="nofollow noreferrer">http://localhost:8080/</a> Content-Length: 0 Date: Fri, 05 Oct 2018 17:26:41 GMT

ответ сервера о сбое wenn интерфейс на порту 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: <a href="http://localhost:8080/" rel="nofollow noreferrer">http://localhost:8080/</a> Content-Length: 0 Date: Fri, 05 Oct 2018 17:30:53 GMT

ДОПОЛНИТЕЛЬНО:

Для быстрой разработки Frontend (React) работает на порте 3000. Запрос CORS работает хорошо.Я получаю проблему с аутентификацией из внешнего интерфейса:

  • небольшая проблема 1 - перенаправление на порт 8080
  • большая проблема 2: аутентификация прошла успешно, но на порту 8080

У меня просто не будет успешной аутентификации во время выполнения реакции. Frontend.localhost: 3000.не использовать Spring-MVC.

сервер успешно работает и на порту 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: <a href="http://localhost:8080/" rel="nofollow noreferrer">http://localhost:8080/</a> 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: <a href="http://localhost:8080/" rel="nofollow noreferrer">http://localhost:8080/</a> 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'})

1 Ответ

0 голосов
/ 07 октября 2018

Я полагаю, что проблема вызвана политикой Cors на стороне клиента.Добавление некоторых параметров в ваш вызов ajax может помочь.Если вы используете пример fetch apifor, попробуйте включить в параметры запроса учетные данные: "include".

надеюсь, это поможет.

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