Classe Interceptor no Struts 1

1 resposta
getAdicted

Bom dia a todos,

Estou tentando implementar no Struts 1, algo parecido com a classe Interceptor utilizada, por exemplo, no VRaptor e Struts 2, ou seja, tenho um login e senha cadastrado no banco e se o usuário tentar acessar qualquer outra JSP da aplicação que não seja a página de login, ele será direcionado para a mesma, para que efetue login. Alguém sabe me dizer se há uma interface que possa implentar ou uma classe que eu possa extender para fazer esse tipo de procedimento no Struts 1?

Desde já agradeço.

1 Resposta

getAdicted

[RESOLVIDO]

Consegui baixando o securityfilter 2.0, adicionando o arquivo securityfilter-config.xml à pasta /WEB-INF

securityfilter-config.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE securityfilter-config PUBLIC
    "-//SecurityFilter.org//DTD Security Filter Configuration 2.0//EN"
    "http://www.securityfilter.org/dtd/securityfilter-config_2_0.dtd">

<securityfilter-config>


    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Application Web</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>usuario</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>FORM</auth-method>
        <form-login-config>
         <!-- login form -->
            <form-login-page>/login.jsp</form-login-page>
         <!-- login error page -->
            <form-error-page>/login.jsp</form-error-page>
         <!-- send users here on spontaneous login submittal -->
            <form-default-page>/novo.jsp</form-default-page>
        </form-login-config>
    </login-config>


    <realm className="org.securityfilter.realm.catalina.CatalinaRealmAdapter"/>

    <realm className="com.caelum.struts.security.SecurityFilterRealm"/>

</securityfilter-config>

Adicionando o seguinte filtro ao arquivo web.xml da minha aplicação

web.xml:

<filter>
        <filter-name>Security Filter</filter-name>
        <filter-class>org.securityfilter.filter.SecurityFilter</filter-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/securityfilter-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>validate</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>Security Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

e extendendo a classe import org.apache.catalina.realm.RealmBase

SecurityFilterRealm:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.caelum.struts.security;

import java.security.Principal;
import java.util.ArrayList;
import org.apache.catalina.realm.GenericPrincipal;
import org.apache.catalina.realm.RealmBase;

/**
 *
 * @author HOUSE
 */
public class SecurityFilterRealm extends RealmBase {

    @Override
    protected String getName() {
        return "RealmBase";
    }

    @Override
    protected String getPassword(String login) {
       return "senha";  
  }

    @Override
    protected Principal getPrincipal(String login) {
        ArrayList roleList = new ArrayList();
        roleList.add("usuario");
        return new GenericPrincipal(this, login, getPassword(login), roleList);
    }
}

Descarregando os .jars: catalina.jar e securityfilter.jar ao CLASSPATH.

Se alguém tiver alguma dúvida, terei, na medida do possível, prazer em ajudar!

Obs. Dar uma sapiada em JDBCRealm.

[]'s

Criado 3 de outubro de 2010
Ultima resposta 15 de out. de 2010
Respostas 1
Participantes 1