gpt4 book ai didi

java - 在 spring security 登录成功期间强制 Https 连接

转载 作者:行者123 更新时间:2023-11-29 08:39:52 25 4
gpt4 key购买 nike

我有一个 spring boot 应用程序,其中包含 spring security,添加了 formLogin 和自定义 loginPage 。每当我通过身份验证时,它都会将我发送到 defaultSuccessUrl,即/app/dashboard 并使用模式 http 发送我一整天都在尝试将 successUrl 模式设为 https 只是调整一些更改在 application.properties 上,有时在 Bean 上,但我仍然无法实现它。我的应用程序在 cloudfoundry 中,我没有 80 端口,只有 443(https)。

我在spring的配置是这样的:

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 结合使用,但效果不佳。

最佳答案

您是否尝试过 requiresChannel()requiresSecure()?对于可通过 https 访问的特定 url,您可以尝试

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

对于所有通过https的请求,你可以使用like

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

您可以像下面这样使用端口映射。

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

请引用thisthis了解更多详情。

关于java - 在 spring security 登录成功期间强制 Https 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41111378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com