2014-11-19 4 views
0

Я пытаюсь интегрировать весеннюю безопасность в мое приложение после конфигурации. Я заблокирован этой ошибкой. Я пытаюсь реализовать Spring 3 Security в проекте, но я не могу избавиться от следующее сообщение об ошибке:Проверка подлинности в Spring безопасности Исправление фильтра

GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/Gelt] 
    threw exception [L''exécution du filtre (Filter) a lancé une exception] with root 
cause java.lang.NoSuchMethodError: org.springframework.security.access.intercept.AbstractSecurityInterceptor.finallyInvocation(Lorg/springframework/security/access/intercept/InterceptorStatusToken;)V 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:120) 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) 

весна-security.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/security" 
     xmlns:beans="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:p="http://www.springframework.org/schema/p" 
     xmlns:util="http://www.springframework.org/schema/util" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
http://www.springframework.org/schema/security 
http://www.springframework.org/schema/security/spring-security-3.1.xsd 
http://www.springframework.org/schema/util 
http://www.springframework.org/schema/util/spring-util-3.1.xsd"> 

<http use-expressions="true"> 
    <intercept-url pattern="/pages/centres.jsf" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" /> 
    <intercept-url pattern="/pages/services.jsf" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" /> 
    <intercept-url pattern="/pages/medecins.jsf" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" /> 
    <intercept-url pattern="/pages/fiches.jsf" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" /> 
    <intercept-url pattern="/pages/users.jsf" access="hasRole('ROLE_ADMIN')" /> 
    <!-- 
    <access-denied-handler error-page="/403.jsf" />--> 
    <!-- access denied page 
    <access-denied-handler error-page="/403.jsf" />--> 
    <form-login /> 

    <logout logout-success-url="/index.jsf" />     

</http> 

<authentication-manager alias="authenticationManager"> 
    <authentication-provider> 
     <jdbc-user-service data-source-ref="dataSource" 
          users-by-username-query="SELECT username , password , idrole FROM user U where U.username=?" 
          authorities-by-username-query="SELECT U.username as username, R.role as role FROM user U, role R WHERE U.idrole=R.idrole and U.username=?" 
     /> 
    </authentication-provider> 
</authentication-manager> 

<beans:bean id="LoginBean" name="LoginBean" class="com.mdsoft.gelt.bean.LoginBean" scope="prototype"> 
    <beans:property name="authenticationManager" ref="authenticationManager"></beans:property> 
</beans:bean> 

pom.xml

 <!-- Spring Security --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>3.1.5.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>3.1.5.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>3.1.5.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.webflow</groupId> 
     <artifactId>spring-faces</artifactId> 
     <version>2.3.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>3.1.1.RELEASE</version> 
     <type>jar</type> 
    </dependency> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns 
    /javaee/web-app_2_5.xsd" 
    id="WebApp_ID" 
    version="2.5"> 

<display-name>GELT</display-name> 
<!-- Spring Security Facelets Tag Library --> 
<context-param> 
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name> 
    <param-value>/WEB-INF/springsecurity.taglib.xml</param-value> 
</context-param> 

<!-- Spring Context Configuration' s Path definition --> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/applicationContext.xml 
     /WEB-INF/spring-security.xml 
    </param-value> 
</context-param> 
<filter> 
<filter-name>springSecurityFilterChain</filter-name> 
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
<filter-name>springSecurityFilterChain</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 
<!-- The Bootstrap listener to start up and shut down Spring's root WebApplicationContext. It is registered to Servlet Container --> 
<listener> 
    <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 
<listener> 
    <listener-class> 
     org.springframework.web.context.request.RequestContextListener 
    </listener-class> 
</listener> 

<!-- Project Stage Level --> 

<context-param> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>client</param-value> 
</context-param> 

<!-- Welcome Page --> 
<welcome-file-list> 
    <welcome-file>/index.jsf</welcome-file> 
</welcome-file-list> 

<!-- JSF Servlet is defined to container --> 
<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<!-- Mapping with servlet and url for the http requests. --> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.faces</url-pattern> 
</servlet-mapping> 

, пожалуйста, помогите мне спасибо за ваш помогает привет

ответ

2

Вы обычно видите такие ошибки, когда ваш код компилируется против одна версия библиотеки, но другая версия библиотеки находится на пути к классам во время выполнения.

Если мы посмотрим на рассматриваемом методе мы можем видеть, что не существует в v3.1.1 от Spring Security

http://docs.spring.io/autorepo/docs/spring-security/3.1.1.RELEASE/apidocs/org/springframework/security/access/intercept/AbstractSecurityInterceptor.html

но присутствовали в v3.1.5

http://docs.spring.io/autorepo/docs/spring-security/3.1.5.RELEASE/apidocs/org/springframework/security/access/intercept/AbstractSecurityInterceptor.html

Я отмечаю несоответствие в POM между пружинным ядром (3.1.1) и веб-конфигурационными модулями (3.1.5). Таким образом, мы можем предположить, что код скомпилирован против 3.1.1 (посмотрите на иерархию зависимостей Maven), чтобы подтвердить, но 3.1.5 используется во время выполнения (посмотрите в папке WEB-INF/lib вашего развернутого веб-приложения, чтобы подтвердить 3.1 .5 - это втягивание в качестве транзитивной зависимости веб-и конфигурационных модулей).

Предлагаемое исправление заключается в том, чтобы обновить модуль POM до точечного ядра до 3.1.5.

<dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>3.1.5.RELEASE</version> 
     <type>jar</type> 
    </dependency> 
+0

Это действительно помогло мне Спасибо большое :) – JEEDEV

Смежные вопросы