Spring 安全:配置错误
Spring Security : configuration error
我的 XSD 版本高于 4,但我无法解决这个问题,为什么仍然存在冲突?
我正在使用 Spring JAR,它们都具有版本 4 或更高版本,但仍然出现错误。
以下是 XSD spring-security.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.1.xsd">
<security:http auto-config="true"> <!-- ////this line holds error/////-->
<security:intercept-url pattern="/"
access="hasRole('ROLE_ADMIN')" />
<security:form-login login-page="/login"
default-target-url="/" authentication-failure-url="/loginerror" />
<security:logout logout-success-url="/logout" />
<security:csrf disabled="true" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="admin" authorities="ROLE_ADMIN"
password="admin" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
</beans>
错误如下:
Multiple annotations found at this line:
- Configuration problem: You cannot use a spring-security-2.0.xsd or spring-security-3.0.xsd schema with Spring Security 3.1. Please update
your schema declarations to the 3.1 schema. Offending resource: file
[C:/Documents and Settings/Administrator/My Documents/Google
Drive/spring_workspace/spring
security_demo/WebContent/WEB-INF/security-context.xml]
- You cannot use a spring-security-2.0.xsd or spring-security-3.0.xsd schema with Spring Security 3.1. Please update your schema
declarations to the 3.1 schema.
这是我的调度程序 servlet 架构:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
首先我认为我提到的两个 .xsd
文件都存在冲突,但现在两个“.xsd”文件具有相同的架构。
编辑:活动详情
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: You cannot use a spring-security-2.0.xsd or
spring-security-3.0.xsd schema with Spring Security 3.1. Please update
your schema declarations to the 3.1 schema. Offending resource: file
[C:/Documents and Settings/Administrator/My Documents/Google
Drive/spring_workspace/spring
security_demo/WebContent/WEB-INF/security-context.xml]
at
org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$BeansConfigProblemReporter.fatal(BeansConfig.java:1137)
at
org.springframework.beans.factory.parsing.ReaderContext.fatal(ReaderContext.java:68)
at
org.springframework.beans.factory.parsing.ReaderContext.fatal(ReaderContext.java:55)
at
org.springframework.security.config.SecurityNamespaceHandler.parse(SecurityNamespaceHandler.java:66)
at
org.springframework.ide.eclipse.beans.core.internal.model.namespaces.DelegatingNamespaceHandlerResolver$ElementTrackingNamespaceHandler.parse(DelegatingNamespaceHandlerResolver.java:177)
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1411)
at
org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ErrorSuppressingBeanDefinitionParserDelegate.parseCustomElement(BeansConfig.java:1428)
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1401)
at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:172)
at
org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ToolingFriendlyBeanDefinitionDocumentReader.doRegisterBeanDefinitions(BeansConfig.java:1357)
at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)
at
org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig.registerBeanDefinitions(BeansConfig.java:410)
如何解决?
你的例外说
You should not use 4.1 xsd,since your spring security version is 3.1
在下一行你提到spring安全版本为4.1,应该是3.1
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.1.xsd">
两种方法解决
- 改为
http://www.springframework.org/schema/security/spring-security-3.1.xsd
- 删除版本以便 spring 将自动采用
http://www.springframework.org/schema/security/spring-security.xsd
更新: 将 use-expressions 属性添加到 http
。由于您使用的是表达式 hasRole('Role_Admin')
,因此您必须提供此属性。
<security:http auto-config="true" use-expressions="true">
我的 XSD 版本高于 4,但我无法解决这个问题,为什么仍然存在冲突?
我正在使用 Spring JAR,它们都具有版本 4 或更高版本,但仍然出现错误。
以下是 XSD spring-security.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.1.xsd">
<security:http auto-config="true"> <!-- ////this line holds error/////-->
<security:intercept-url pattern="/"
access="hasRole('ROLE_ADMIN')" />
<security:form-login login-page="/login"
default-target-url="/" authentication-failure-url="/loginerror" />
<security:logout logout-success-url="/logout" />
<security:csrf disabled="true" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="admin" authorities="ROLE_ADMIN"
password="admin" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
</beans>
错误如下:
Multiple annotations found at this line: - Configuration problem: You cannot use a spring-security-2.0.xsd or spring-security-3.0.xsd schema with Spring Security 3.1. Please update your schema declarations to the 3.1 schema. Offending resource: file [C:/Documents and Settings/Administrator/My Documents/Google Drive/spring_workspace/spring security_demo/WebContent/WEB-INF/security-context.xml] - You cannot use a spring-security-2.0.xsd or spring-security-3.0.xsd schema with Spring Security 3.1. Please update your schema declarations to the 3.1 schema.
这是我的调度程序 servlet 架构:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
首先我认为我提到的两个 .xsd
文件都存在冲突,但现在两个“.xsd”文件具有相同的架构。
编辑:活动详情
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: You cannot use a spring-security-2.0.xsd or spring-security-3.0.xsd schema with Spring Security 3.1. Please update your schema declarations to the 3.1 schema. Offending resource: file [C:/Documents and Settings/Administrator/My Documents/Google Drive/spring_workspace/spring security_demo/WebContent/WEB-INF/security-context.xml]
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$BeansConfigProblemReporter.fatal(BeansConfig.java:1137)
at org.springframework.beans.factory.parsing.ReaderContext.fatal(ReaderContext.java:68)
at org.springframework.beans.factory.parsing.ReaderContext.fatal(ReaderContext.java:55)
at org.springframework.security.config.SecurityNamespaceHandler.parse(SecurityNamespaceHandler.java:66)
at org.springframework.ide.eclipse.beans.core.internal.model.namespaces.DelegatingNamespaceHandlerResolver$ElementTrackingNamespaceHandler.parse(DelegatingNamespaceHandlerResolver.java:177)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1411)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ErrorSuppressingBeanDefinitionParserDelegate.parseCustomElement(BeansConfig.java:1428)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1401)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:172)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ToolingFriendlyBeanDefinitionDocumentReader.doRegisterBeanDefinitions(BeansConfig.java:1357)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig.registerBeanDefinitions(BeansConfig.java:410)
如何解决?
你的例外说
You should not use 4.1 xsd,since your spring security version is 3.1
在下一行你提到spring安全版本为4.1,应该是3.1
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.1.xsd">
两种方法解决
- 改为
http://www.springframework.org/schema/security/spring-security-3.1.xsd
- 删除版本以便 spring 将自动采用
http://www.springframework.org/schema/security/spring-security.xsd
更新: 将 use-expressions 属性添加到 http
。由于您使用的是表达式 hasRole('Role_Admin')
,因此您必须提供此属性。
<security:http auto-config="true" use-expressions="true">