У меня есть проект Spring Boot ,, в котором используется служба безопасности Shiro Provid。 Моя конфигурация Shiro выглядит следующим образом:
@Configuration
public class ShiroConf {
@Bean
public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
shiroFilterFactoryBean.setSecurityManager(securityManager);
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
filterChainDefinitionMap.put("/", "anon");
filterChainDefinitionMap.put("/**", "authc");
shiroFilterFactoryBean.setLoginUrl("/login");
shiroFilterFactoryBean.setSuccessUrl("/homepage/index");
shiroFilterFactoryBean.setUnauthorizedUrl("/403");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilterFactoryBean;
}
@Bean
public SecurityManager securityManager() {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(customRealm());
securityManager.setRememberMeManager(rememberMeManager());
securityManager.setSessionManager(defaultWebSessionManager());
securityManager.setCacheManager(cacheManager());
return securityManager;
}
@Bean
public AuthCustomRealm customRealm() {
AuthCustomRealm customRealm = new AuthCustomRealm();
customRealm.setCredentialsMatcher(hashedCredentialsMatcher());
return customRealm;
}
@Bean
public HashedCredentialsMatcher hashedCredentialsMatcher() {
HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();
hashedCredentialsMatcher.setHashAlgorithmName("md5");
hashedCredentialsMatcher.setHashIterations(3);
hashedCredentialsMatcher.setStoredCredentialsHexEncoded(true);
return hashedCredentialsMatcher;
}
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
return authorizationAttributeSourceAdvisor;
}
@Bean
public SimpleCookie rememberMeCookie() {
SimpleCookie simpleCookie = new SimpleCookie("rememberMe");
simpleCookie.setMaxAge(259200);
return simpleCookie;
}
@Bean
public CookieRememberMeManager rememberMeManager() {
CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
cookieRememberMeManager.setCookie(rememberMeCookie());
return cookieRememberMeManager;
}
@Bean
public ShiroDialect shiroDialect() {
return new ShiroDialect();
}
@Bean(name="sessionManager")
public DefaultWebSessionManager defaultWebSessionManager() {
DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
sessionManager.setCacheManager(cacheManager());
sessionManager.setGlobalSessionTimeout(1000*3600*24);
sessionManager.setSessionValidationSchedulerEnabled(true);
sessionManager.setSessionValidationInterval(1800000);
sessionManager.setDeleteInvalidSessions(true);
sessionManager.setSessionDAO(sessionDAO());
return sessionManager;
}
@Bean(name = "sessionDAO")
public CYSessionDAO sessionDAO(){
CYSessionDAO CYSessionDAO = new CYSessionDAO();
CYSessionDAO.setActiveSessionsCacheName("shiro-activeSessionCache");
CYSessionDAO.setCacheManager(cacheManager());
return CYSessionDAO;
}
@Bean
public EhCacheManager cacheManager() {
EhCacheManager cacheManager = new EhCacheManager();
cacheManager.setCacheManagerConfigFile("classpath:config/ehcache.xml");
return cacheManager;
}
}
После того, как я нажму кнопку «Выполнить» project проект не может быть успешно запущен и предоставит мне информацию :
2020-03-10 18: 22: 33.289 WARN 20060 --- [main] s. c .a.AnnotationConfigApplicationContext: во время инициализации контекста возникла исключительная ситуация - отмена refre sh попытка: org.springframework .beans.factory.BeanCreationException: Ошибка создания компонента с именем 'shirFilter', определенным в ресурсе пути к классу [heyin / es / offlineweb / shiro / ShiroConf.class]: BeanPostProcessor до того, как не удалось создать экземпляр компонента; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration ': BeanPostProcessor до того, как не удалось создать экземпляр компонента; вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем 'authorizationAttributeSourceAdvisor', определенным в ресурсе пути к классу [heyin / es / offlineweb / shiro / ShiroConf.class]: несоответствующая зависимость, выраженная параметром 0 sourceourceAject ; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем securityManager, определенным в ресурсе пути к классу [heyin / es / offlineweb / shiro / ShiroConf.class]: создание экземпляра компонента с помощью метода фабрики не выполнено; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org. apache .shiro.mgt.SecurityManager]: фабричный метод 'securityManager' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'RememberMeManager', определенным в ресурсе пути к классу [heyin / es / offlineweb / shiro / ShiroConf.class]: создание экземпляра компонента с помощью метода фабрики не выполнено; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org. apache .shiro.web.mgt.CookieRememberMeManager]: фабричный метод 'RememberMeManager' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'RememberMeCook ie', определенного в ресурсе пути к классу [heyin / es / offlineweb / shiro / ShiroConf.class]: пост-обработка определения объединенного бина не смогли; вложенное исключение: java .lang.IllegalStateException: Не удалось проанализировать класс [org. apache .shiro.web.servlet.SimpleCookie] из ClassLoader [sun.mis c. Launcher$AppClassLoader@18b4aac2]
Это простой веб-проект. Почему это случилось?
Моя версия:
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.3.2</version>