You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot整合Spring Security登录后无法跳转至成功页面求助

我帮你排查了下代码,发现两个关键问题导致登录后一直重定向回登录页,下面是具体的问题分析和解决方案:

问题1:登录表单缺少CSRF令牌

Spring Security默认启用了CSRF保护机制,你的登录表单使用POST方式提交,但没有携带CSRF令牌,这会导致请求被框架拦截,最终认证失败并重定向回登录页。

解决方法:在登录表单里添加CSRF令牌字段,修改你的index.ftl:

<!DOCTYPE html>
<#import "/spring.ftl" as spring />
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="<@spring.url '/login' />" method="post">
    <!-- 添加CSRF令牌 -->
    <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
    username:<input type="text" name="username"><br>
    password:<input type="password" name="password"><br>
    <input type="submit" value="login">
</form>
</body>
</html>

问题2:密码未通过PasswordEncoder加密

Spring Security 5及以上版本强制要求密码必须通过PasswordEncoder加密处理,你当前的内存认证直接使用明文密码,会导致认证逻辑失败,而且因为没有配置详细的调试日志,所以看不到失败原因。

解决步骤:

  1. 在SecurityConfig中添加PasswordEncoder的Bean:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    MyUserDetailsService detailsService;

    // 新增PasswordEncoder Bean
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    // ... 其他原有配置

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .passwordEncoder(passwordEncoder()) // 指定密码编码器
                .withUser("admin")
                .password(passwordEncoder().encode("admin")) // 对明文密码加密
                .roles("USER");
    }
}

额外优化建议

  • 开启Spring Security调试日志,方便后续排查问题,在application.properties中添加:
logging.level.org.springframework.security=DEBUG
  • 如果希望无论用户是直接访问登录页还是被重定向到登录页,登录成功后都强制跳转到/user/welcome,可以修改defaultSuccessUrl的配置:
.defaultSuccessUrl("/user/welcome", true)

第二个参数设为true表示忽略之前的请求地址,强制跳转到指定页面。

内容的提问来源于stack exchange,提问作者Aezio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:56:35