Не удалось проанализировать класс org. apache .shiro.web.servlet.SimpleCookie - PullRequest
0 голосов
/ 10 марта 2020

У меня есть проект 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>    
...