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

Spring Security 4.0 XML配置:仅启用CSRF防护,无需认证

解决Spring Security 4.0 XML配置无认证仅CSRF防护的报错问题

你遇到的这个NoSuchBeanDefinitionException是因为配置里的auto-config="true"在搞事情——这个属性会自动帮你配置一系列认证相关的组件(比如认证管理器、登录表单这些),但你明确要的是无需认证,只保留CSRF防护,这就导致Spring Security试图创建认证管理器,却找不到对应的配置,自然报错了。

正确的配置方案

只需要调整你的spring-security.xml,去掉自动配置,同时确保CSRF防护开启(Spring Security 4.0默认是开启的,不过显式声明更稳妥):

<beans:beans xmlns="http://www.springframework.org/schema/security"
             xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
             http://www.springframework.org/schema/security
             http://www.springframework.org/schema/security/spring-security-4.0.xsd">

    <!-- 关闭自动配置,仅配置请求拦截和CSRF防护 -->
    <http>
        <!-- 允许所有请求访问 -->
        <intercept-url pattern="/**" access="permitAll"/>
        <!-- 显式开启CSRF防护(默认已开启,可省略,但声明更清晰) -->
        <csrf/>
    </http>

</beans:beans>

关键说明

  • 去掉auto-config="true":避免Spring自动创建你不需要的认证相关bean,从根源解决找不到认证管理器的问题。
  • <csrf/>:显式开启CSRF防护,虽然Spring Security 4.0默认启用,但加上这行能让配置意图更明确,也防止后续版本默认行为变化带来的问题。
  • <intercept-url pattern="/**" access="permitAll"/>:确保所有请求都无需认证即可访问,符合你的需求。

这样配置后,应用就只会启用CSRF防护,不会强制要求认证,也不会再抛出认证管理器找不到的异常了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:26:51