Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 25 di 39
  • livello principiante
Indice lezioni

Utilizzare i cookie

Come utilizzare i cookie nel nostro sistema di autenticazione
Come utilizzare i cookie nel nostro sistema di autenticazione
Link copiato negli appunti

Le variabili di Sessione risiedono nella memoria del server. Esse hanno una vita breve, poiché "scadono" quando l'utente chiude la finestra del browser e accede nuovamente al sito, creando così una nuova sessione ColdFusion.

Una buona idea può essere quella di memorizzare lo username e la password in un cookie così che l'utente abbia il form di autenticazione già compilato e non debba ogni volta digitare login e password.

1. inserisci alla fine del file index.cfm il tag per includere il form di autenticazione:

<hr>
<cfinclude template="autenticazione.cfm">

Ora sarà possibile eseguire il login anche dalla home page. Ogni volta che l'utente esegue il login, salviamo in due cookie lo username e la password.

2. Modifica il file autenticazione.cfm là dove viene verificato l'invio del form di login:

<!--- Esegue il logout dell'utente --->.
<cfif isDefined('form.faiLogout')>
     <cflogout>
</cfif><!--- Il codice all'interno di <cflogin> viene eseguito solo se l'utente non è già autenticato --->.
<cflogin>    <cfif isDefined('form.username') AND isDefined('form.password')>
    
     <!--- Memorizza username e password nei cookie --->.
     <cfcookie name="username" value="#form.username#" expires="NEVER">
     <cfcookie name="password" value="#form.password#" expires="NEVER">

     .......

Il tag <cfcookie> crea una variabile con scope "cookie" che viene salvata nel computer dell'utente. L'attributo "name" dà il nome alla variabile, l'attributo "value" ne definisce il valore e l'attributo "expires" la scadenza.

Se si passa all'attributo "expires" la parola chiave "NEVER" significa che il cookie rimarrà memorizzato sul client del visitatore 1) finché egli non lo rimuove e 2) finché noi non lo facciamo scadere. Alternativamente, avremmo potuto specificare una data (nel formato mm/gg/anno) o il numero di giorni terminati i quali il cookie deve scadere.

3. Modifichiamo il file modulo_login.cfm affinché visualizzi il contenuto del cookie:

<!--- modulo_login.cfm: mostra un modulo per eseguire il login --->.

<p class="titolo">
      Esegui l'autenticazione
</p>
      <p>
      <cfform>
                  <table border="0" cellspacing="1" cellpadding="3">
                        <tr>
                              <td><p>Username:</p></td>
                              <td><cfinput name="username" type="text" required="yes" message="Inserisci il tuo username." value="#cookie.username#"></td>
                        </tr>
                        <tr>
                              <td><p>Password:</p></td>
                              <td><cfinput name="password" type="password" value="#cookie.password#"></td>
                        </tr>
                        <tr>
                              <td> </td>
                              <td><input type="submit" value="Login"></td>
                        </tr>
                  </table>
            </cfform>
      </p>

Nota che all'interno di un <cfform> non è necessario utilizzare <cfoutput> per visualizzare il contenuto delle variabili.

4. Poiché non è detto che i cookie siano esistenti, utilizziamo il tag <cfparam> per attribuire alle due variabili "cookie.username" e "cookie.password" una stringa vuota come valore di default:

<!--- modulo_login.cfm: mostra un modulo per eseguire il login --->.

<cfparam name="cookie.username" default="" type="string">
<cfparam name="cookie.password" default="" type="string">

<p class="titolo">
      Esegui l'autenticazione
</p>
      <p>
      <cfform>
                  <table border="0" cellspacing="1" cellpadding="3">
                        <tr>
                              <td><p>Username:</p></td>
                              <td><cfinput name="username" type="text" required="yes" message="Inserisci il tuo username." value="#cookie.username#"></td>
                        </tr>
                        <tr>
                              <td><p>Password:</p></td>
                              <td><cfinput name="password" type="password" value="#cookie.password#"></td>
                        </tr>
                        <tr>
                              <td> </td>
                              <td><input type="submit" value="Login"></td>
                        </tr>
                  </table>
            </cfform>
      </p>

5. Quando l'utente esegue il logout i cookie possono venire eliminati: aggiungi il seguente codice al file autenticazione.cfm, là dove ColdFusion esegue il <cflogout>:

<!--- Esegue il logout dell'utente --->.
<cfif isDefined('form.faiLogout')>
     <cfcookie name="username" expires="NOW">
     <cfcookie name="password" expires="NOW">
     <cflogout>
</cfif><!--- Il codice all'interno di <cflogin> viene eseguito solo se l'utente non è già autenticato --->.
<cflogin>

.....

L'attributo expires="NOW" indica a <cfcookie> di eliminare i cookie con il nome specificato nell'attributo "name".

Fai delle prove per verificare il funzionamento: vedrai che se chiudi il browser quando un utente è autenticato, ColdFusion dimentica la sessione autenticata. Riaprendo la pagina, però, il modulo di login conterrà i campi già compilati con i valori provenienti dal cookie. Cliccando, invece, sul pulsante di logout i campi saranno vuoti poiché i cookie sono stati eliminati.

Non è una cattiva idea aggiungere, al messaggio di benvenuto, i link alle pagine inserimento.cfm o elimina.cfm, qualora l'utente autenticato possa accedervi.

6. Modifica ad esempio il messaggio di benvenuto, nel file autenticazione.cfm, in questo modo:

.......
</cflogin>
<cfoutput>
     <p><form method="post">Bentornato <b>#GetAuthUser()#</b>!
          <input type="submit" value="Logout" name="faiLogout"></form></p>
     <p>
          <cfif isUserInRole('inserimento')>
               Puoi <a href="inserimento.cfm">inserire</a> nuovi album.<br>
          <cfelse>
               Non puoi inserire nuovi album.<br>
          </cfif>
          <cfif isUserInRole('eliminazione')>
               Puoi <a href="elimina.cfm">cancellare</a> gli album esistenti.<br>
          <cfelse>
               Non puoi cancellare gli album esistenti.<br>
          </cfif>
          <cfif isUserInRole('modifica')>
               Puoi modificare gli album esistenti.
          <cfelse>
               Non puoi modificare gli album esistenti.
          </cfif>
     </p>
</cfoutput>

Fai ora dei test sul funzionamento del sistema di autenticazione. Se vuoi confrontare i file che hai scritto fino a qui con quelli che ho fatto io puoi scaricarli da qui.


Ti consigliamo anche