从acegi迁移到spring-security时出错,这里有什么问题?

时间:2016-02-21 20:13:32

标签: java spring security spring-security

我正在将基于acegi的旧应用程序的安全性升级到spring-security。

我相信我已经为spring安全条目替换了所有acegi条目,但是当我尝试运行应用程序时,控制台中的第一个错误是:

org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.security.web.access.intercept.FilterSecurityInterceptor] for bean with name 'filterSecurityInterceptor' defined in class path resource [spring/spring-framework-security.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.security.web.access.intercept.FilterSecurityInterceptor
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1352) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:628) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:597) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1445) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:445) [spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:415) [spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:86) [spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:678) [spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.__refresh(AbstractApplicationContext.java:520) [spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java) [spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446) [spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) [spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) [spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5077) [catalina.jar:7.0.67]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5591) [catalina.jar:7.0.67]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [catalina.jar:7.0.67]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574) [catalina.jar:7.0.67]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564) [catalina.jar:7.0.67]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_66]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_66]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_66]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_66]

spring/spring-framework-security.xml中此bean的定义是:

    <bean id="filterSecurityInterceptor" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
    <property name="authenticationManager" ref="authenticationManager" />
    <property name="accessDecisionManager" ref="accessDecisionManager" />
    <property name="objectDefinitionSource">
        <ref local="databasePathBasedFilterInvocationDefinitionMap" />
    </property>
</bean> 

<bean id="databasePathBasedFilterInvocationDefinitionMap"
    class="b.c.m.security.spring.utils.DatabasePathBasedFilterInvocationDefinitionMap" />

类本身定义为:

public class DatabasePathBasedFilterInvocationDefinitionMap {

private RoleMappingBusiness roleMappingBusiness;

private PathMatcher pathMatcher = new AntPathMatcher();

private boolean convertUrlToLowercaseBeforeComparison = false;

private boolean considerParameters = true;

public ConfigAttribute lookupAttributes(String url) {

    if (!considerParameters) {
        int firstQuestionMarkIndex = url.lastIndexOf("?");

        if (firstQuestionMarkIndex != -1) {
            url = url.substring(0, firstQuestionMarkIndex);
        }
    }

    if (convertUrlToLowercaseBeforeComparison) {
        url = url.toLowerCase();
    }

    List<RoleMapping> list = this.roleMappingBusiness.findAll();
    Collections.sort(list);

    for (RoleMapping roleMapping : list) {
        boolean matched = pathMatcher.match(roleMapping.getUrl(), url);
        if (matched) {
//              String[] roles = roleMapping.getCsvRole().split(",");
//              for (String role : roles) {
////                    configAttr.addConfigAttribute(new SecurityConfig(role));
//              }

            ConfigAttribute configAttr = new SecurityConfig(roleMapping.getCsvRole().split(",").toString());


            return configAttr;
        }
    }
    return null;
}

@Autowired
public void setRoleMappingBusiness(RoleMappingBusiness roleMappingBusiness) {
    this.roleMappingBusiness = roleMappingBusiness;
}

public Iterator getConfigAttributeDefinitions() {
    return null;
}

public boolean isConvertUrlToLowercaseBeforeComparison() {
    return convertUrlToLowercaseBeforeComparison;
}

public void setConvertUrlToLowercaseBeforeComparison(boolean convertUrlToLowercaseBeforeComparison) {
    this.convertUrlToLowercaseBeforeComparison = convertUrlToLowercaseBeforeComparison;
}

public boolean isConsiderParameters() {
    return considerParameters;
}

public void setConsiderParameters(boolean considerParameters) {
    this.considerParameters = considerParameters;
}
}

我在这里缺少什么?

0 个答案:

没有答案