已配置对象的后续处理

Spring Security的Java配置没有公开每个配置对象的每一个属性,这简化了广大用户的配置。毕竟如果要配置每一个属性,用户可以使用标准的Bean配置。

虽然有一些很好的理由不直接暴露所有属性,用户可能任然需要更多高级配置,为了解决这个Spring Security引入了 ObjectPostProcessor 概念,用来修改或替换Java配置的对象实例。例如:如果你想在FilterSecurityInterceptor里配置filterSecurityPublishAuthorizationSuccess属性,你可以像下面一样:

  1. @Override
  2. protected void configure(HttpSecurity http) throws Exception {
  3. http
  4. .authorizeRequests()
  5. .anyRequest().authenticated()
  6. .withObjectPostProcessor(new ObjectPostProcessor<FilterSecurityInterceptor>() {
  7. public <O extends FilterSecurityInterceptor> O postProcess(
  8. O fsi) {
  9. fsi.setPublishAuthorizationSuccess(true);
  10. return fsi;
  11. }
  12. });
  13. }