Принудительное соединение 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);
Пожалуйста, обратитесь это и это для более подробной информации.