Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    Java (Gestire le sessioni, tramite servlet?)

    Ciao a tutti,

    vorrei avere delle dritte su come gestire delle sessioni.

    Allora, poniamo il caso di avere una pagina index.jsp dove e' presente una richiesta di nomeUtente e password.
    Una volta fatto il submit viene controllato da un servlet se il nomeUtente e la password sono presenti all'interno di un DB(fin quì nessun problema).

    La mia domanda è la seguente:

    come faccio adesso a "salvare" la sessione dell'utente autentificato in modo che possa accedere alle pagine pagina1.jsp e pagina2.jsp senza che debba utentificarsi per ogni pagina?
    È possibile farlo senza utilizzare i cookie?
    Immagino possa fare un controllo del tipo se l'utente è autentificato allora visualizza la pagina, altrimenti non visualizzarla, ma come gestisco il tutto, dove viene registrata la sessione?
    Altrimente che insieme di tecnologie potrei utilizzare per gestire il tutto al meglio?

    Potreste darmi delle dritte?

    Grazie,
    Roberto

  2. #2
    Ciao Roberto,
    Allora diciamo che ci sono due strade da percorerre per gestire l'autenticazione di un utente in abiente web.
    La prima veloce è molto "newbesca" e far si che la servlet una volta autenticato l'utente metta nella mappa di sessione un variabile booleana "loggato". Nel pagine che seguono ti basta inserire un controllo del tipo "esiste questa variabile, è true" se il controllo va bene allora visualizzi la pagina altrimente effetti una redirect verso un pagina che comunica il fatto che bisogna essere loggati.
    La seconda è quella di affidarsi al JAAS (Java Authentication and Authorization Service) che tutti i container java mettono a disposizione per gestire l'autenticazione alle varie web app java.
    La configurazione di tale servizio dipende dal container su cui esegui l'applicativo.
    Lato applicativo ti basta definire nel tuo web.xml i ruoli applicativi e le varie risorse che devono essere messe in sicurezza es:
    codice:
    <security-constraint>
           <display-name>AdminConstraint</display-name>
           <web-resource-collection>
               <web-resource-name>Admin</web-resource-name>
               <description>Only for administrators</description>
               <url-pattern>/admin/*</url-pattern>
               <http-method>GET</http-method>
               <http-method>POST</http-method>
           </web-resource-collection>
           <auth-constraint>
               <description/>
               <role-name>Admin</role-name>
               </auth-constraint>
           </security-constraint>
       <security-constraint>
       
       <security-role>
           <description>Administrators</description>
           <role-name>Admin</role-name>
       </security-role>
    Con questo codice definisci che tutte le pagine all'interno della cartella "admin" possono essere visualizzate solo dagli utenti che hanno come ruolo "Admin".
    Per quanto invece concerne la configurazione del login:
    codice:
    <login-config>     
    <auth-method>FORM</auth-method> 
    	<form-login-config>   
    		<form-login-page>/login/index.htm</form-login-page> 
    	</form-login-config>   
    </login-config>
    In questo modo definisci la pagina che verrà usata per i login (ovviamente tale pagina non può essere messa in sicurezza).
    codice:
    <form method="POST" action="j_security_check">
    Login: <input type="text" name="j_username">
    
    Passwort: <input type="password" name="j_password">
    
    <input type="submit" value="Login"/>
    </form>

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Ciao Francesco,

    grazie per la risposta!!!

    Preferirei provare all'inzio con qualche cosa di semplice per poi passare alla seconda soluzione che mi hai proposto.

    Quando dici:
    La prima veloce è molto "newbesca" e far si che la servlet una volta autenticato l'utente metta nella mappa di sessione un variabile booleana "loggato".
    Dove e come salvo questa variabile, come creo una "mappa di sessione", esiste una classe per questo con i relativi metodi/o?

    Mi potresti fare un esempio terra terra "piccolino"!!!


    Grazie dell'aiuto e per la disponibilita',
    Roberto

  4. #4
    Mi sa che le tue conoscenze di J2EE sono molto basse, non sapere che esiste una sessione e come ottenerla è una della basi del framework.
    Cmq è alquanto semplice :
    codice:
    public void doGet(HttpServletRequest request,HttpServletResponse response)
    {
     /*
    * ottengo L'oggetto httpSession, il parametro true indica che se non esiste la sessione dovrà essere creata.
    **/
     HttpSession session = request.getSession(true);
     //setto il mio parametro
     session.setAttribute("logged",true); 
     //Se adesso volessi rileggerlo:
     //Object logged = session.getAttribute("logged");
     //boolean loggedBool = (Boolean) logged;
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Mi sa che le tue conoscenze di J2EE sono molto basse, non sapere che esiste una sessione e come ottenerla è una della basi del framework.
    Sì, sono basse, lo ammetto!
    Sto studiando adesso da autodidatta!
    Purtroppo il mio lavoro ha sempre riguardato altro, sono sistemista, però vorrei cambiare totalmente e passare alla programmazione su web, che mi ha sempre interessato di piu'.

    Avevo studiato anni fa PHP, con un poco di html ma non mi soddisfava.

    Quando ho iniziato a studiare Java ho visto che se volevo fare web dovevo sapere sql, xml, html, javascript, css, capire come è strutturato il dom e perché no, jquery e ajax.
    L'insieme e' molto complesso ma molto interessante.


    Sei stato molto prezioso!


    Grazie,
    Roberto

  6. #6
    Di nulla siamo qui per questo.
    Se hai ancora bisogno siamo qui.
    Ti auguro cmq di realizzare quello che hai in mente.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.