13

在 XML 配置中,我可以使用security命名空间来启用对安全性的支持,例如:

<security:authentication-manager alias="authenticationManager">
    <security:authentication-provider ref="authenticator" />
</security:authentication-manager>

<security:global-method-security pre-post-annotations="enabled" />

<bean id="authenticator"
    class="org.springframework.security.authentication.TestingAuthenticationProvider" />

我尝试使用没有 XML 的 Spring,只有@Configuration类。与上面的 XML 示例这样的配置等价的纯 Java 是什么?

4

1 回答 1

12

编辑:2013 年 12 月Spring Security 3.2 发布实现了 Java 配置,所以上面的 XML 大致相当于:

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

  @Override
  protected void configure(final AuthenticationManagerBuilder auth)
      throws Exception {
    auth.authenticationProvider(authenticator());
    super.configure(auth);
  }

  @Bean
  public AuthenticationProvider authenticator() {
    return new TestingAuthenticationProvider();
  }

}

2012年的旧答案:

不幸的是,没有。检查这个答案(半年前由 Spring Security Lead dev发布):

目前没有简单的方法来使用 Java 配置进行 Spring Security 配置。您必须知道命名空间在幕后做了什么,这使得它变得困难且容易出错。出于这个原因,我建议坚持使用 Spring Security 命名空间配置。

一种选择是为非官方项目Scalasec做出贡献,该项目提供基于 Scala 的配置,并在 SpringSource 博客上的这篇文章中进行了描述。同样,不建议将其用于生产,因为项目似乎已被放弃。我想有一天尝试这个项目,但目前没有空闲时间:(

于 2012-09-06T16:36:31.210 回答