2014-10-25 13 views
17

Denetleyici yöntemlerinde @PreAuthorize ve @PostAuthorice notlarını kullanarak Spring WebMVC Uygulaması var. Ancak bu açıklamalar benim bahar güvenliğimden bu yana etkinleştirmediğim için göz ardı ediliyor.Spring Security ön sonrası açıklamaları programatik olarak etkinleştirin

Bir spring-security.xml olurdu ben şu satırla etkinleştirmek olabilir:

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

Ne yazık ki tam bir ek açıklama tabanlı yapılandırma var. İlkbahar-Güvenlik prensibi uygulamada çalışır.

Soruma Soru: Ek not sonrası açıklamaları bir ek açıklamalı MVC karmaşası ile nasıl etkinleştirebilirim?

  • İlkbahar-Versiyon: 4.0.5.RELEASE
  • İlkbahar-Güvenlik-Versiyon: 3.2.4.RELEASE

Bu benim WebSecurityConfigurerAdapter uygulamasıdır:

@Configuration 
@EnableWebMvcSecurity() 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired DataSource dataSource; 
    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth.jdbcAuthentication() 
      .dataSource(dataSource) 
      .passwordEncoder(new ShaPasswordEncoder(256)) 
      .usersByUsernameQuery("select username,password, enabled from user where USERNAME=?") 
      .authoritiesByUsernameQuery("select u.username, r.name from user u, role r, user_has_role uhr where u.id = uhr.user_id and r.id = uhr.role_id and u.username = ? "); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/resources/**").permitAll() 
       .anyRequest().authenticated() 
       .and() 
      .formLogin() 
       .loginPage("/login") 
       .permitAll() 
       .defaultSuccessUrl("/", true) 
       .and() 
      .logout() 
       //.logoutUrl("/logout") //this is the default 
       // Call the URL invalidate_session after logout... 
       .logoutSuccessUrl("/invalidate_session") 
       .permitAll() 
       .and() 
       // @see http://docs.spring.io/spring-security/site/docs/3.2.x/reference/htmlsingle/#csrf-configure 
      .csrf().disable(); 
    } 
} 

Benim MessageSecurityWebApplicationInitializer boş:

public class MessageSecurityWebApplicationInitializer extends 
     AbstractSecurityWebApplicationInitializer { 

} 

cevap

35

Aşağıdaki notu Yapılandırma sınıfına eklemek zorunda kaldım: @EnableGlobalMethodSecurity(prePostEnabled=true)

İlgili konular