
Spring Security 教程(15)、安全命名空间配置
Diebug传统 XML 配置方式



Spring Security 最初通过 XML 命名空间提供配置方式,许多老项目仍然使用这种方式。
1 | <security:http auto-config="true" use-expressions="true"> |
命名空间的核心元素
| 元素 | 作用 |
|---|---|
<http> |
配置 HTTP 安全过滤器链 |
<intercept-url> |
定义 URL 的访问规则 |
<form-login> |
配置表单登录 |
<logout> |
配置登出行为 |
<csrf> |
配置 CSRF 防护 |
<authentication-manager> |
配置认证管理器 |
<authentication-provider> |
配置认证提供者 |
<user-service> |
定义内存中的用户 |
从 XML 迁移到 Java Config
XML 和 Java Config 的功能完全等价。迁移时遵循以下规则:
| XML 配置 | Java Config 等价写法 |
|---|---|
<http auto-config="true"> |
http.authorizeRequests().anyRequest().authenticated() |
<intercept-url pattern="/public/**" access="permitAll"/> |
.requestMatchers("/public/**").permitAll() |
<form-login login-page="/login"/> |
.formLogin().loginPage("/login") |
<authentication-manager> + <user-service> |
auth.inMemoryAuthentication().withUser(...) |
什么时候继续用 XML
尽管 Java Config 是推荐方式,但以下情况 XML 可能更合适:
- 老旧项目不想大规模重构
- 需要与已有的 XML 配置体系保持一致
- 团队对 XML 更熟悉
- 安全配置需要非开发人员(如运维)手动修改
混合使用
Spring Security 允许 XML 和 Java Config 混合使用。你可以在 Java Config 中导入 XML 配置:
1 | @ImportResource("classpath:security-config.xml") |
或者在 XML 中引用 Java Config 的 Bean:
1 | <bean id="customFilter" class="com.example.CustomFilter"/> |
混合使用时,Java Config 优先于 XML 配置。
喜欢这篇文章的人也看了
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果