2010-02-16 4 views
3

J'essaie d'activer Spring Security 2.5 dans mon application de printemps, mais je rencontre des problèmes de configuration. J'ai suivi quelques exemples et j'ai fait ce qu'ils font, mais je pense que quelque chose d'autre que j'ai configuré cause des problèmes.Activation de la sécurité Spring dans l'application Spring MVC

Voici mon 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>onBoardingUI</display-name> 


<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/security-context.xml 
    </param-value> 
</context-param> 

<!-- Enables Spring security --> 
<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> 

<listener> 
    <listener-class>org.apache.commons.fileupload.servlet.FileCleanerCleanup</listener-class> 
</listener> 

<servlet> 
    <servlet-name>testUI</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>testUI</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>testUI</servlet-name> 
    <url-pattern>*.form</url-pattern> 
</servlet-mapping> 

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

<jsp-config> 
    <taglib> 
     <taglib-uri>/spring</taglib-uri> 
     <taglib-location>/WEB-INF/tld/spring-form.tld</taglib-location> 
    </taglib> 
</jsp-config> 

et voici ma sécurité context.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-2.5.xsd 
         http://www.springframework.org/schema/security 
         http://www.springframework.org/schema/security/spring-security-2.0.xsd"> 

<security:global-method-security 
    secured-annotations="enabled" /> 

<security:http auto-config="true"> 
    <!-- Restrict URLs based on role --> 
    <security:intercept-url pattern="/login*" 
     access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
    <security:intercept-url pattern="/logoutSuccess*" 
     access="IS_AUTHENTICATED_ANONYMOUSLY" /> 

    <security:intercept-url pattern="/css/main.css" 
     access="IS_AUTHENTICATED_ANONYMOUSLY" /> 

    <security:intercept-url pattern="/**" access="ROLE_USER" /> 

    <!-- Override default login and logout pages --> 
    <security:form-login login-page="/login.html" 
     login-processing-url="/login.html" default-target-url="/index.jsp" 
     authentication-failure-url="/login.jsp?login_error=1" /> 
    <security:logout logout-url="/logout" 
     logout-success-url="/login.html" /> 
</security:http> 

<security:authentication-provider> 
    <security:jdbc-user-service 
     data-source-ref="dataSource" /> 


</security:authentication-provider> 

La guerre ne parvient pas à déployer et cela est tout ce qui est dans le journal:

Feb 16, 2010 11:46:29 AM org.apache.catalina.core.StandardContext start 
SEVERE: Error listenerStart 

Ceci est évidemment quelque chose causant l'échec de mon auditeur, mais je ne sais pas pourquoi.

Ceci est déployé sur Tomcat 6.0.20 et Spring MVC 2.5 avec Spring Security 2.5.

+2

Recherchez le stacktrace réelle dans d'autres fichiers journaux (* .log stdout, stderr * .log, localhost * .log) – axtavt

+0

Ouais comme indiqué ci-dessus, il devrait y avoir plus d'informations d'enregistrement disponibles. Avez-vous configuré log4j ou quelque chose pour votre webapp? Essayez de définir un seuil de journalisation DEBUG pour org.springframework et tout vider dans la console. Aussi (bien que ce n'est probablement pas casser les choses), vous utilisez la sécurité XSD 2.0 printemps. –

Répondre

2

Se pourrait-il que votre bean 'datasource' ne soit pas défini dans le fichier security-context.xml?

Vérifiez également que le fichier security-context.xml se trouve à l'emplacement correct dans le fichier WAR - en fonction de votre fichier web.xml, il doit se trouver dans /WEB-INF/security-context.xml - vérifiez le répertoire éclaté dans tomcat à voyez si c'est bien là.

HTH

1
<servlet> 
    <servlet-name>testUI</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value></param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet>