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

Spring Security无效凭据登录失败的页面重定向问题

解决方案

1. 修正登录失败的跳转逻辑

你当前配置中使用的failureForwardUrl("/guest")是服务器内部转发,不会改变浏览器地址栏,导致视觉上停留在/process_login页面。需要替换为重定向逻辑,使用failureUrl方法并携带错误标识参数:

修改SecurityConfig类中configure(HttpSecurity http)方法的formLogin配置段:

.formLogin()
.loginPage("/guest")
.loginProcessingUrl("/process_login")
// 替换原failureForwardUrl为failureUrl,携带error参数用于页面判断
.failureUrl("/guest?error=true")
.defaultSuccessUrl("/authorized", true)

2. 在/guest页面展示错误提示

在你的Thymeleaf模板(guest.html)中,添加判断逻辑,当URL中存在error参数时,展示登录错误信息:

<div th:if="${param.error}" class="alert alert-danger">
    用户名或密码错误,请重新输入!
</div>

3. 必要的检查项

  • 确保登录表单的action属性指向/process_login,请求方法为post:
    <form th:action="@{/process_login}" method="post">
        <!-- 用户名输入框、密码输入框、提交按钮 -->
    </form>
    
  • 确认/guest已在allowedPages数组中被允许匿名访问(你的配置已包含此项,无需修改)

原理说明

failureForwardUrl是服务器内部转发请求,浏览器地址不会变化;而failureUrl会发送HTTP重定向响应,浏览器主动跳转到指定路径,地址栏更新为/guest,同时携带的error参数可用于前端页面判断是否展示错误提示。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 22:02:07