Ошибка создания бина с именем projectingArgumentResolverBeanPostProcessor - PullRequest
0 голосов
/ 06 апреля 2019

Я устанавливаю свою веб-безопасность в своем проекте, но я вижу ошибку.это ошибка

org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем 'projectingArgumentResolverBeanPostProcessor', определенным в ресурсе пути к классу [org / springframework / data / web / config / ProjectingArgumentResolverReg]: BeanPostProcessor до сбоя создания экземпляра bean-компонента;вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем «metaDataSourceAdvisor»: невозможно разрешить ссылку на бин «methodSecurityMetadataSource» при установке аргумента конструктора;вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем 'methodSecurityMetadataSource', определенным в ресурсе пути к классу [org / springframework / security / config / annotation / method / configuration / GlobalMethodSecurityConfiguration.class] через экземпляр фабрикиметод не удался;вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.security.access.method.MethodSecurityMetadataSource]: фабричный метод 'methodSecurityMetadataSource' вызвал исключение;вложенное исключение - java.lang.IllegalStateException: в составе всей глобальной конфигурации метода фактически не была активирована поддержка аннотации в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapable ~ava) spring_actF)-5.1.5.RELEASE.jar: 5.1.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory.java:320) ~ [spring-beans-5.1.5.RELEASE.jar: 5.1.5.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) ~ [spring-beans-5.1.5.RELEASE.jar: 5.1.5.RELEASE]в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:318) ~ [spring-beans-5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:204) ~ [spring-beans-5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors (PostProcessorRegistrationDelegate.java:240) ~ [spring-context-5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.context.support.Context.support.Context.support.: 721) ~ [spring-context-5.1.5.RELEASE.jar: 5.1.5.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:534) ~ [spring-context-5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:142) ~ [spring-boot-2.1.3.RELEASE.jpg.3.RELEASE] в org.springframework.boot.SpringApplication.refresh (SpringApplication.java:775) [spring-boot-2.1.3.RELEASE.jar: 2.1.3.RELEASE] в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:397) [spring-boot-2.1.3.RELEASE.jar: 2.1.3.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:316) [spring-boot-2.1.3.RELEASE.jar: 2.1.3.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:1260) [spring-boot-2.1.3.RELEASE.jar: 2.1.3.RELEASE] at org.springframework.boot.SpringApplication.run (SpringApplication.java:1248) [spring-boot-2.1.3.RELEASE.jar: 2.1.3.RELEASE] в com.supermarket.SupermarketApplication.main (SupermarketApplication.java:19) [классы /: нет]

моя треска:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
    @Autowired
    private Environment env;
    @Autowired
    private UserSecurityService usersecurityservice;
    private BCryptPasswordEncoder passwordencoder(){
        return SecurityUtility.passwordEncoder();
    }
    private static final String[]PUBLIC_MATCHES = {
            "/css/**",
            "/js/**",
            "/img/**",
            "/signUp",
            "/",
            "/newUser",
            "/forgetPassword",
            "/login",
            "/fonts/**",
            "/bookshelf/**",
            "/bookDetail/**",
            "/hours",
            "/faq",
            "/searchByCategory",
            "/searchBook"

    };
@Override
protected void configure(HttpSecurity   http)throws Exception{
    http
    .authorizeRequests().
    /*antMatchers("/**").*/
    antMatchers(PUBLIC_MATCHES).
    permitAll().anyRequest().authenticated();

http
    .csrf().disable().cors().disable()
    .formLogin().failureUrl("/login?error")
    .defaultSuccessUrl("/")
    .successForwardUrl("/login")
    .and()
    .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
    .logoutSuccessUrl("/?logout").deleteCookies("remember-me").permitAll()
    .and()
    .rememberMe();

}
@Autowired
public void configureGlobal (AuthenticationManagerBuilder auth) throws Exception{
    auth.userDetailsService(usersecurityservice).passwordEncoder(passwordencoder());
}

} класс userSecurity:

@Service
public class UserSecurityService implements UserDetailsService {

    @Autowired()
    private UserRepository userRepository;

public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    // TODO Auto-generated method stub
    try{

    }catch(Exception ex){
        System.out.println("Error acoured hear:");
    }
    User user=userRepository.findByUsername(username);
    if(null==user){
        throw new UsernameNotFoundException("Username not found");
    }
    return user;
}

Когда я удаляю программу аннотации @EnableGlobalMethodSecurity, она работает правильноЯ использовал эту треску раньше, и она работала правильно.

1 Ответ

0 голосов
/ 13 июня 2019

Вы недавно обновили весну? В предыдущих версиях было нормально иметь нулевое значение MethodSecurityMetadataSource, но теперь они добавили эту проверку , где, если у вас не включен хотя бы один источник метаданных безопасности метода, они выдают исключение, которое вы получаете («В составе всех глобальных настроек метода поддержка аннотаций фактически не активирована»). Это случилось со мной, когда я обновился с весны 5.0.7 до 5.1.5. Вот проблема , где обсуждалось это изменение

Чтобы исправить это, либо включите один из источников метаданных в свойствах аннотации @EnableGlobalMethodSecurity, либо, если, как и я, вы используете какой-то GlobalMethodSecurityConfiguration, убедитесь, что метод customMethodSecurityMetadataSource возвращает not-null

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...