我在我的项目中设置了我的网络安全,但是我看到了一个错误。这是错误
在类路径资源org/springframework/data/web/config/ProjectingArgumentResolverRegistrar.class: BeanPostProcessor中定义了名为“projectingArgumentResolverBeanPostProcessor”的bean创建bean失败之前的错误;嵌套的异常是创建名为“元metaDataSourceAdvisor”的bean时org.springframework.beans.factory.BeanCreationException:错误:在设置构造函数参数时不能解析对bean 'methodSecurityMetadataSource‘的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:错误创建类路径资源中定义的名为'methodSecurityMetadataSource‘的bean,org/springframework/security/config/annotation/method/configuration/GlobalMethodSecurityConfiguration.class: Bean通过工厂方法实例化失败,嵌套异常是org.springframework.beans.BeanInstantiationException:未能实例化org.springframework.security.access.method.MethodSecurityMetadataSource:工厂方法'methodSecurityMetadataSource’抛出的异常;嵌套异常是java.lang.IllegalStateException:在所有全局方法配置的组合中,实际上在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:510) ~spring 5.1.5 RELEASE.jar:5.1.5 support在org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~spring 5.1.5.RELEASE.jar:5.1.5.RELEASE在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222中没有激活任何注释支持。)~spring 5.1.5.RELEASE.jar:5.1.5.RELEASE在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~spring 5.1.5.RELEASE.JAR:5.1.5.RELEASE在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204) ~5.1.5.RELEASE 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 at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java: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.1org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142) ~ .5.RELEASE - org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) -2.1.3.RELEASE.jar:2.1.3..5.RELEASE在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)弹簧-2.1.3.RELEASE.jar:2.1.3.RELEASE在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)弹簧-引导-2。1.3.RELEASE.JAR:2.1.3 org.springframework.boot.SpringApplication.run(SpringApplication.java:316)弹簧的2.1.3 RELEASE.jar:2.1.3 RELEASE.jar:2.1.3.RELEASE在org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)弹簧-2.1.3.RELEASE.JAR:2.1.3.RELEASE在org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)spring-boot-2.1.3 RELEASE.jar:2.1.3. com.supermarket.SupermarketApplication.main(SupermarketApplication.java:19)类/:na中的classes
我的鳕鱼是:
@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‘注释程序正确运行时,我以前使用过这个cod,它正常工作。
发布于 2019-06-13 17:30:30
你最近更新春天了吗?在以前的版本中,有一个空MethodSecurityMetadataSource
是可以的,但是现在他们添加了这张支票,如果您没有启用至少一个方法安全元数据源,它们会抛出您正在获得的异常(“在所有全局方法配置的组合中,实际上没有激活任何注释支持”)。这发生在我从5.0.7到5.1.5春季更新的时候。下面是讨论此更改的问题所在
要修复它,要么在@EnableGlobalMethodSecurity
注释属性中启用一个元数据源,要么像我一样使用某种GlobalMethodSecurityConfiguration
,确保方法customMethodSecurityMetadataSource
返回null。
发布于 2020-07-10 00:27:36
您有此问题,因为您没有正确的注释。您应该这样添加它:@EnableGlobalMethodSecurity(prePostEnabled = true)
https://stackoverflow.com/questions/55549415
复制相似问题