Принудительное соединение Https во время весеннего успешного входа в систему безопасности

У меня есть одно весеннее загрузочное приложение, которое содержит Spring Security с добавлением formLogin и пользовательским loginPage. Когда бы я ни проходил проверку подлинности, он отправлял меня в defaultSuccessUrl, который является / app / dashboard, и отправлял со схемой http, которую я пытался весь день, чтобы просто сделать схему successUrl https, просто настраивая некоторые изменения в application.properties, а иногда и с Бин, но я все еще не в состоянии сделать это. Мое приложение находится в облачном хранилище, и у меня нет 80 портов, а только 443(https) .

Моя конфигурация весной такая:

http
    .authorizeRequests()
    .antMatchers("/", "/forbidden", "/index.html", "/webjars/*", "/app.js", "/access/*", "/signup", "/l10n/*.js", "/", "/tpl/**/*.html", "/fonts/**/*.woff").permitAll()
    .anyRequest().authenticated()

    .and().addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class).
    csrf().csrfTokenRepository(repo)

    .and() .httpBasic().disable()
    .formLogin()
    .loginPage("/access/signin").permitAll()
    .failureUrl("/error")
    .defaultSuccessUrl("/app/dashboard")
    .and().logout()
    .logoutRequestMatcher(new AntPathRequestMatcher("access/logout"))
    .logoutSuccessUrl("/access/signin").permitAll();

Я также пытался использовать абсолютный URL с https, но он не работает хорошо.

1 ответ

Ты пробовал requiresChannel() а также requiresSecure()? Чтобы конкретный URL был доступен через https, вы можете попробовать

.defaultSuccessUrl("/app/dashboard").and().requiresChannel().antMatchers("/app/dashboard").requiresSecure() 

Для всех запросов, чтобы пройти через https, вы можете использовать как

.and().requiresChannel().anyRequest().requiresSecure()

Вы можете использовать отображение портов, как показано ниже.

 http
     .portMapper()              
        .http(8080).mapsTo(443);

Пожалуйста, обратитесь это и это для более подробной информации.

Другие вопросы по тегам