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

Spring MVC+Thymeleaf登录功能失效求助:点击无响应

排查Spring MVC+Thymeleaf登录按钮无响应问题

我来帮你分析下可能导致登录按钮点击无反应的几个关键点,结合你给出的代码逐一拆解:

1. 表单提交路径与Spring Security配置不匹配

这是最核心的问题。你的登录表单th:action="@{/DS_login}"是把请求POST到/DS_login,但Spring Security默认的登录处理端点是/login,你并没有明确告诉它要使用自定义的/DS_login来处理登录请求。

同时,你在DemoApplication里把/DS_login映射成了返回登录页面的GET请求,当你POST到这个路径时,Spring Security会把它当成一个需要认证的普通请求——但此时用户还未登录,系统会自动重定向回登录页面,所以看起来点击按钮毫无反应。

解决办法:修改SecurityConfig,在formLogin配置里添加loginProcessingUrl("/DS_login"),并合并重复的formLogin配置(你现在写了两次,会导致配置覆盖):

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .antMatchers("/user/**", "/css/**", "/img/**", "/DS_Register").permitAll()
            .anyRequest().authenticated()
        .and()
        .formLogin()
            .loginPage("/DS_login") // 指定登录页面的访问路径
            .loginProcessingUrl("/DS_login") // 指定处理登录提交的路径,和表单action一致
            .defaultSuccessUrl("/DS_Home", true)
            .permitAll(); // 允许所有人访问登录相关的端点
}

2. 登录按钮类型的潜在问题

你用了<input type="image" ...>作为提交按钮,虽然它理论上可以触发表单提交,但有时候会因为图片路径错误、元素被其他组件覆盖或者浏览器兼容性问题,导致点击事件无法正常触发。

测试方案:暂时换成标准的提交按钮试试:

<input type="submit" name="login" value="Login" />

如果换成这个按钮后能正常提交,那就是type="image"的问题——检查下../img/b1.gif的路径是否正确(可以在浏览器里直接访问这个路径看图片能不能加载),或者调整按钮的CSS确保它的可点击区域没有被遮挡。

3. 借助开发者工具快速定位

打开浏览器开发者工具(按F12),切换到Network标签页,点击登录按钮后观察:

  • 如果没有任何请求发送,说明按钮的点击事件根本没触发,大概率是按钮被遮挡或者样式问题。
  • 如果有请求,看响应状态码(比如302重定向),如果重定向回了登录页面,就印证了我第一个点说的路径不匹配问题。

同时看看后端控制台的日志,有没有关于认证请求的错误信息,这也能帮你快速缩小问题范围。

为什么注册功能能正常运行?

注册功能不受影响,是因为你在SecurityConfig里给/DS_Register加了permitAll(),而且注册请求的处理路径不在Spring Security的拦截冲突范围内,所以流程能正常走通。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:12:27