Bonjour,
Je travaille sur une application avec les frameworks Spring, Struts2, Hibernate, je souhaite intégrer Spring Security.
Je veux ajouter un formulaire personnalisé de login, mais l'application me renvoie une exception :
voila mon web.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>ata</display-name>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>loginForm.jsp</welcome-file>
    </welcome-file-list>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            WEB-INF/classes/*.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>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
     
</web-app>
springSecurity.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:security="http://www.springframework.org/schema/security"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
    <security:http pattern="/login" security="none" />
    <security:http use-expressions="true">
        <security:intercept-url pattern="/admin/*"
            access="hasRole('ROLE_USER')" />
        <security:form-login
                login-page="/login"
                default-target-url="/index"
                authentication-failure-url="/login"/>
        <security:logout logout-url="/logout" logout-success-url="/index"/>
 
    </security:http>
    <security:authentication-manager>
        <security:authentication-provider>
            <security:user-service>
                <security:user name="utilisateur" authorities="ROLE_USER"
                    password="motDePasse" />
            </security:user-service>
        </security:authentication-provider>
    </security:authentication-manager>
</beans>
struts.xml

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
    <include file="struts-default.xml" />
    <package name="default" namespace="/admin" extends="struts-default">
        .
        .
        .
        .
        .
        .
        .  
    </package>
    <package name="package1" extends="struts-default" >
        <action name="/login" class="com.projet.action.LoginAction" method="login">
            <result name="success">loginForm.jsp</result>
            <result name="error">compte.jsp</result>
        </action>
        <action name="/index">
            <result>index.jsp</result>
        </action>
    </package>
</struts>
LoginAction.java

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
import com.opensymphony.xwork2.ActionSupport;
 
import com.opensymphony.xwork2.ModelDriven;
 
public class LoginAction extends ActionSupport implements ModelDriven{
 
    public Object getModel() {
        // TODO Auto-generated method stub
        return null;
    }
 
    public String login(){
        try {
            return SUCCESS;
        } catch (Exception e) {
            return ERROR;
        }
 
    }
 
}
loginForm.jsp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>application | Accueil</title>
</head>
<body>
    <center>
        <h1>TGRNVP Application | Amabis Maroc</h1>
        <s:form action="j_spring_security_check" method="POST">
            <s:textfield name="j_username" label="Login" autofocus="autofocus"/>
            <s:password name="j_password" label="Mot de passe"/>
            <s:submit name="Envoyer" value="Envoyer"/>
        </s:form>
        <font color="red">
            <span>${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}</span>
        </font>
    </center>
</body>
</html>
sur la console, l'erreur suivante s'affiche:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
avr. 29, 2014 4:34:21 PM org.springframework.orm.hibernate3.HibernateTransactionManager afterPropertiesSet
Infos: Using DataSource [org.apache.commons.dbcp.BasicDataSource@2625c4] of Hibernate SessionFactory for HibernateTransactionManager
avr. 29, 2014 4:34:21 PM org.springframework.web.context.ContextLoader initWebApplicationContext
Infos: Root WebApplicationContext: initialization completed in 9547 ms
avr. 29, 2014 4:34:21 PM com.opensymphony.xwork2.config.providers.XmlConfigurationProvider info
Infos: Parsing configuration file [struts-default.xml]
avr. 29, 2014 4:34:22 PM com.opensymphony.xwork2.config.providers.XmlConfigurationProvider info
Infos: Parsing configuration file [struts-plugin.xml]
avr. 29, 2014 4:34:22 PM com.opensymphony.xwork2.config.providers.XmlConfigurationProvider info
Infos: Parsing configuration file [struts.xml]
avr. 29, 2014 4:34:22 PM org.apache.struts2.spring.StrutsSpringObjectFactory info
Infos: Initializing Struts-Spring integration...
avr. 29, 2014 4:34:22 PM com.opensymphony.xwork2.spring.SpringObjectFactory info
Infos: Setting autowire strategy to name
avr. 29, 2014 4:34:22 PM org.apache.struts2.spring.StrutsSpringObjectFactory info
Infos: ... initialized Struts-Spring integration successfully
avr. 29, 2014 4:34:24 PM org.apache.coyote.http11.Http11Protocol init
Infos: Initializing Coyote HTTP/1.1 on http-8080
avr. 29, 2014 4:34:24 PM org.apache.coyote.http11.Http11Protocol start
Infos: Starting Coyote HTTP/1.1 on http-8080
avr. 29, 2014 4:34:36 PM org.apache.struts2.components.ServletUrlRenderer warn
Avertissement: No configuration found for the specified action: 'j_spring_security_check' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
avr. 29, 2014 4:34:38 PM org.apache.struts2.components.ServletUrlRenderer warn
Avertissement: No configuration found for the specified action: 'j_spring_security_check' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
avr. 29, 2014 4:34:43 PM org.apache.struts2.dispatcher.Dispatcher warn
Avertissement: Could not find action or result
There is no Action mapped for namespace / and action name index. - [unknown location]
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
    at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
    at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:744)
Nom : msg.PNG
Affichages : 698
Taille : 10,7 Ko
Merci de m'aider, je suis vraiment bloqué