Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309

    struts2 - protezione accesso diretto ai file

    Ciao
    sto cercando di capire la nuova versione di struts.
    Ho creato il file struts.xml:
    codice:
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>
           
       <package name="registrazione" namespace="/" extends="struts-default">    
          <global-results>
             <result name="error">/error/Error.jsp</result>
          </global-results>
    
          <global-exception-mappings>
             <exception-mapping exception="java.lang.Exception" result="error" />
          </global-exception-mappings>
          
          <action name="login">
             <result>/login.jsp</result> 
          </action>
          
          <action name="registrati">
             <result>/registrati.jsp</result> 
          </action>
       </package>
       
       
       <package name="amministrazione" namespace="/secure" extends="struts-default">
          <interceptors>
             <interceptor name="authenticationInterceptor" class="org.utils.AuthenticationInterceptor" />
             <interceptor-stack name="secureStack">
                <interceptor-ref name="authenticationInterceptor" />
                <interceptor-ref name="defaultStack" />
             </interceptor-stack>
          </interceptors>
          
          <default-interceptor-ref name="secureStack" />
          
          <global-results>
             <result name="login" type="redirect">
                /login.action
             </result>
             <result name="error">/error/error.jsp</result>
          </global-results>
          
          <global-exception-mappings>
             <exception-mapping exception="java.lang.Exception" result="error" />
          </global-exception-mappings>
          
          <action name="amministra">
             <result>/secure/amministra.jsp</result> 
          </action>
          
       </package>
    </struts>
    Nella root ho il file index e login mentre nella cartella secure ho inserito la pagina per l'amministrazione.
    nel caso dalla index cerco di accedere nella pagina amministrativa mi rimanda alla pagina di login e va bene.
    Il problema è che se metto il richiamo via url alla pagina amministra.jsp che si trova nella cartella secure mi fa accedere senza problemi (http://localhost:8080/myapplication/...amministra.jsp)
    Come posso fare per negare l'accesso a tutte le risorse che si trovano nella cartella secure agli utenti non registrati?


    grazie per gli eventuali suggerimenti

    ciao
    tomcat 6.016
    netbeans 6.1

  2. #2
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Se devi accedere a quella jsp con un login la cosa migliore è mettere in sessione un bean e quando accedi alla jsp verificare che in sessione sia presente, altrimenti dare un error di mancato login, oppure reindirizzare nella pagina di login.
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    si in effetti la strada semplice può essere questa, quindi fare una pagina da includere in tutte le jsp che si trovano nella cartella secure.
    Pensavo magari a qualcosa di più elgante del tipo <security-constraint> da inserire nel web.xml. Non so però se posso avere problemi con la configurazione di struts.
    male che va adotterò questa soluzione
    tomcat 6.016
    netbeans 6.1

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    altra soluzione potrebbe essere un filter?
    se si c'è qualche articolo che ne spiega l'implementazione?
    tomcat 6.016
    netbeans 6.1

  5. #5
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Tutorial RoseIndia
    Vai qui che c'è un bel tutorial su Struts2
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    rieccomi...
    guardato il tutorial abbastanza semplice. Unico problema è la validazine che non mi considera per niente, ma è un problema che vorrei affrontare dopo.
    A differenza mia è che agisce direttamente con action mentre io ho cercato di capire meglio il funzionamento degli interceptor, pensando che mi avrebbero appunto aiutato a intercettare le chiamate che arrivavano alla cartella secure e verificare se farmi andare avanti oppure mandarmi alla pagina di autenticazione.
    per ora la soluzione è verificare nella jsp se esiste o meno l'oggetto in sessione.
    Cerco di approfondire i listener magari possono fare loro questo lavoro...


    ciao e grz per la disponibilità
    tomcat 6.016
    netbeans 6.1

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    ciao
    sono ora bloccato sulla soluzione del filtro:
    codice:
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import org.beans.User;
    import com.opensymphony.xwork2.Action;
    
    public class FilterSecure implements Filter{
          
       private FilterConfig filterConfig = null;
       
       public void destroy(){
          
       }
       public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException,
                         ServletException{
          //User user = ((HttpServletRequest) request).getParameter("user");      
          HttpSession session = ((HttpServletRequest)request).getSession();
          User user = (User)session.getAttribute("user");
          if(user==null){
            //codice per passare l'azione giusta
             
          }
          else chain.doFilter(request, response);
       }
       
       public void init(FilterConfig filterConfig){
          this.filterConfig = filterConfig;
       }
    
    }
    ora mi sfugge la sintassi per passare l'azione. Devo passare per il response? se si come?
    ora mi porta una pagina bianca. vorrei che nell'url che visualizzza ci fosse login.action che è l'azione che mi riporta alla pagina di login.
    nel web xml ho configurato il filtro sull'url pattern /secure/*
    altra cosa non è ridondante come effetto rispetto a struts? (nel senso che magari stesso nella classe che estende interceptor avrei potuto inserire il codice?)
    tomcat 6.016
    netbeans 6.1

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    per ora ho risolto mettendo:
    codice:
         if(user==null){
             //codice per passare l'azione giusta        
             RequestDispatcher rd = request.getRequestDispatcher("../login.jsp"); 
             rd.forward(request, response);
          }
    rimane solo l'url visualizzata che punta su una jsp invece che a un'action.
    unica cosa che mi piacerebbe è far visualizzare l'azione e non il richiamo alla pagina jsp.
    se qualcuno ha quanche idea su come fare....
    tomcat 6.016
    netbeans 6.1

  9. #9
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Configurando il tomcat-config.xml
    Con le action, poi potrai chiamare direttamene "www.sito.it/miaAction.do"
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    forse intenti il web.xml?
    di default la nuova versine di struts non usa il ".do" ma ".action"
    In effetti ho provato vari modi ma sembra che il forward non viene intercettato poi da struts.
    come ho scritto richiamo la pagina di ../login.jsp, anche perchè la risorsa chiesta al momento di far partire il filtro si trova gia in secure, quindi sono dovuto risalire di livello e nella barra degli indirizzi di explorer rimane la richiasta originale...
    tomcat 6.016
    netbeans 6.1

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.