Integração Struts 2 + Spring + SpringSecurity

0 respostas
furacao123

Estou tentando fazer a integracao do Struts 2 com SpringSecurity mas ainda nao saquei como integrar o SpringSecurity no controle de login com Struts 2

segue o web.xml
<?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">
    <!-- SPRING -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext*.xml</param-value>
    </context-param>
    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    <!-- FILTROS -->
    <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>requestContextFilter</filter-name>
        <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
    </filter>
    
    <filter>
        <filter-name>character-encoding</filter-name>
        <filter-class>br.com.intesis.producaonfe.CharacterEncodingFilter</filter-class>
    </filter>
    <filter>
        <filter-name>struts-prepare</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
    </filter>
    <filter>
        <filter-name>struts-execute</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>requestContextFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter>
        <filter-name>sitemesh</filter-name>
        <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>character-encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts-prepare</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>sitemesh</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts-execute</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    
    <!-- Welcome file lists -->
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    
</web-app>
e aqui o applicationContext
<?xml version="1.0" encoding="ISO-8859-1"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:b="http://www.springframework.org/schema/beans"
        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-3.0.xsd">

    <!-- SPRING SECURITY -->   
    <http auto-config="true" access-denied-page="/acessonegado.jsp" use-expressions="true">
        <intercept-url pattern="/admin/**" access="hasAnyRole('ROLE_MANAGER','ROLE_ADMIN')" />
        <intercept-url pattern="/pages/**" access="hasAnyRole('ROLE_MANAGER','ROLE_ADMIN','ROLE_USER')"/>
        <intercept-url pattern="/home.jsp" access="permitAll"/>
        <form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=invalido"/>
        <openid-login authentication-success-handler-ref="openIdAuthenticationHandler">
            <attribute-exchange>
                <openid-attribute name="email" type="http://schema.openid.net/contact/email"/>
            </attribute-exchange>
        </openid-login>
    </http>
    
    <authentication-manager>
        <authentication-provider>
            <jdbc-user-service data-source-ref="dataSource"
               users-by-username-query="SELECT login, senha, ativo FROM usuario WHERE login=?"
               authorities-by-username-query="SELECT login, tipo FROM usuario WHERE login=?"
            />
        </authentication-provider>
    </authentication-manager>

    <b:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <b:property name="url" value="jdbc:mysql://192.168.0.45:3306/mensagerianfe" />
        <b:property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <b:property name="username" value="root" />
        <b:property name="password" value="senha" />
    </b:bean>

    <b:bean id="openIdAuthenticationHandler" class="MeuAuthenticationSuccessHandler"/>

    
    <!-- BEANS -->
    
    <bean id="usuarioRepository" class="br.com.intesis.producaonfe.infrastructure.UsuarioDecorator">
        <property name="dao">
            <bean name="GenericJPADAO" class="br.com.intesis.producaonfe.infrastructure.dao.GenericJPADAO">
                <constructor-arg value="br.com.intesis.producaonfe.domain.Usuario" />
            </bean>
        </property>
    </bean>


</beans>
e aqui o struts.xml
<?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.0.dtd">

<struts>
  
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">
        <interceptors>
            <interceptor name="verificarInstalacao"
        class="br.com.intesis.producaonfe.controller.VerificarInstalacaoInterceptor" />
            <interceptor-stack name="mensageriaNFeInstalacaoStack">
                <interceptor-ref name="exception" />
                <interceptor-ref name="alias" />
                <interceptor-ref name="servletConfig" />
                <interceptor-ref name="i18n" />
                <interceptor-ref name="prepare" />
                <interceptor-ref name="chain" />
                <interceptor-ref name="debugging" />
                <interceptor-ref name="profiling" />
                <interceptor-ref name="scopedModelDriven" />
                <interceptor-ref name="modelDriven" />
                <interceptor-ref name="fileUpload" />
                <interceptor-ref name="checkbox" />
                <interceptor-ref name="staticParams" />
                <interceptor-ref name="actionMappingParams" />
                <interceptor-ref name="params">
                    <param name="excludeParams">dojo\..*,^struts\..*</param>
                </interceptor-ref>
                <interceptor-ref name="conversionError" />
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
                <interceptor-ref name="jsonValidation" />
                <interceptor-ref name="workflow">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
            </interceptor-stack>
            <interceptor-stack name="mensageriaNFeStack">
                <interceptor-ref name="verificarInstalacao" />
                <interceptor-ref name="mensageriaNFeInstalacaoStack" />
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="mensageriaNFeStack" />
        <default-action-ref name="home" />
        <global-results>
            <result name="instalar" type="chain">
                <param name="actionName">instalar!input</param>
                <param name="namespace">/instalarSistema</param>
            </result>
            <result name="acesso_negado">/acessonegado.jsp</result>
        </global-results>
        <action name="home" class="br.com.intesis.producaonfe.controller.HomeAction">
            <result>/home.jsp</result>
        </action>
        <action name="login" class="br.com.intesis.producaonfe.controller.LoginAction">
            <result name="input">/home.jsp</result>
            <result>/home.jsp</result>
        </action>
        <action name="logout" class="br.com.intesis.producaonfe.controller.LoginAction" method="logout">
            <result>/home.jsp</result>
        </action>
    </package>
    
    <package name="instalarSistema" namespace="/instalarSistema" extends="default">
        <default-interceptor-ref name="mensageriaNFeInstalacaoStack" />
        <default-action-ref name="instalar!input" />
        <action name="instalar!*" method="{1}"
      class="br.com.intesis.producaonfe.controller.InstalarSistemaAction">
            <result name="input">/WEB-INF/pages/instalarSistema/form.jsp</result>
            <result>/WEB-INF/pages/instalarSistema/result.jsp</result>
        </action>
    </package>
 
</struts>

estou desenvolvendo por tentativa, a integracao Struts 2 e Spring funcionou, mas tive problemas na injecao dos interceptors.

Preciso de uma ajuda para começar

Obrigado

Criado 12 de agosto de 2011
Respostas 0
Participantes 1