0
我寻觅的StackOverflow,发现关于注射AuthenticaitonManager以下问题:How To Inject AuthenticationManager using Java Configuration in a Custom Filter,但是这个问题是三十岁了,我的配置是所有Java。错误创建AuthenticaitonManager豆
迁移从另一个项目代码和Spring 1.5.3启动后,我得到以下错误:
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
15:48:00.316 [main] ERROR o.s.b.SpringApplication#815 Application startup failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityServiceImpl': Unsatisfied dependency expressed through field 'authenticationManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationManager' defined in class path resource [org/springframework/boot/autoconfigure/security/AuthenticationManagerConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.authentication.AuthenticationManager]: Factory method 'authenticationManager' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDetailsServiceImpl' defined in file [/Users/intheshell/Desktop/Project_C/target/classes/com/hellokoding/account/service/UserDetailsServiceImpl.class]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/util/PartialOrder$PartialComparable
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
我得到一个错误,如果我尝试实例的AuthenticationManager该类型不能被实例化。我是否需要“将AuthenticationManager显式暴露为bean”,如下所述:Spring Security Java Config?这是否仍然与2017年和我的情况有关?最佳做法是什么?
这里是我的SecurityServiceImpl
@Controller
@Service
public class SecurityServiceImpl implements SecurityService{
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private UserDetailsService userDetailsService;
private static final Logger logger = LoggerFactory.getLogger(SecurityServiceImpl.class);
@Override
public String findLoggedInUsername() {
Object userDetails = SecurityContextHolder.getContext().getAuthentication().getDetails();
if (userDetails instanceof UserDetails) {
return ((UserDetails)userDetails).getUsername();
}
return null;
}
@Override
public void autologin(String username, String password) {
UserDetails userDetails = userDetailsService.loadUserByUsername(username);
UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(userDetails, password, userDetails.getAuthorities());
authenticationManager.authenticate(usernamePasswordAuthenticationToken);
if (usernamePasswordAuthenticationToken.isAuthenticated()) {
SecurityContextHolder.getContext().setAuthentication(usernamePasswordAuthenticationToken);
logger.debug(String.format("Auto login %s successfully!", username));
}
}
}
这定了!谢谢!你能解释一下你是如何发现这种依赖失踪的吗? – InTheShell
这很简单。我做的第一件事是首先谷歌。我进入了缺少的课程和“Maven依赖” – StanislavL