Per realizzare pagine riservate si crea un database nel quale si memorizzano
nome e password per ogni utente autorizzato
come nell'esempio:
|
Successivamente si collega il database al sito e si crea una pagina di login dove l'utente immette il proprio nome e password. In seguito la pagina di login cerca nel database se esiste una riga ("tupla" è il termine preciso) con i corrispondenti valori immessi dall'utente. Se la trova assegna all'utente il diritto di accedere all'area protetta e lo indirizza verso una pagina riservata, altrimenti lo invia ad una pagina di errore.
Ovviamente dovremo specificare quali sono le pagine protette. In questo modo se un utente digiterà direttamente l'indirizzo di una pagina di questo tipo verrà automaticamente indirizzato verso la solita pagina di errore.
Prerequisiti
Le pagine riservate (che creeremo seguendo le istruzioni di questo articolo) possono essere usate in locale solo da chi ha un server web installato. Troviamo in ASP e Access in locale con Dreamweaver MX - I maggiori informazioni su come installare, configurare ed usare un server locale. Coloro che non hanno ancora installato un server locale dovrebbero farlo prima di proseguire con la lettura.
Le pagine che Dreamweaver scriverà per noi (se seguiremo questo articolo) saranno nei linguaggi ASP e JavaScript ma potremmo "dire" a Dreamweaver di scrivere in un altro linguaggio di script (come PHP, JSP, etc...) che preferiamo o che è supportato dal server remoto che ospiterà il sito.
Configurare Dreamweaver ed il server locale
Prima di inziare creiamo una nuova cartella locale (con nome loginLocale) nella quale salvere i file del sito.
Creiamo poi un'altra cartella con nome loginVirtuale all'interno del nostro server locale (ovvero nella directory c:Inetpubwwwroot). Poi accediamo alle proprietà della cartella, apriamo la scheda Condivisione Web, scegliamo Condividi Cartella Contrassegniamo le voci Lettura, Scrittura, Esplorazione Directory e Solo Script. Confermiamo con Ok.
Successivamente creiamo un nuovo sito in Dreamweaver con nome Test Area Riservata ed impostiamo loginLocale come Cartellaprincipale del sito e la cartella loginVirtuale comeCartella server di prova. Troviamo ASP e Access in locale con Dreamweaver MX - I per farlo.
Il database
Dobbiamo creare un database (con Microsoft Access) nel qualeinseriremo la tabella utenti così strutturata:
|
Access ci chiederà il permesso di inserire l'ulteriorecampo ID: rispondiamo Si. Successivamente apriamo la tabella utenti con Access, inseriamoun nome e password: ad esempio Paperino e rosso.
Creiamo ora la cartella mdb-database all'interno di loginLocalee salviamoci il database con nome database.mdb.
Nota: raggiungiamo il database con Risorse del computer, facciamo clic destrosul file ed attiviamo l'opzione Consenti di propagare a questo oggettole autorizzazioni ereditabili dal padre.
Il file login.asp
Lanciamo Dreamweaver, apriamo il sito Test Area Riservatae trasferiamo tutto il sito sul server di prova (in realtà trasferiremosolo il database) e scegliamo File > Nuovo.
Scegliamo Pagina dinamica dal riquadro Categoriae ASPJavaScript dal riquadro Pagina dinamica,scegliamo infine Crea.
Apriamo il pannello Application presente sulla destra delloschermo ed accediamo alla scheda Database, premiamo il pulsante+ e scegliamo Stringa di connessione personalizzata.
Nella casella Nome connessione scriviamo mioDatabasementre nella casella Stringa di connessione inseriamo la seguentestringa:
"Driver={MicrosoftAccess Driver (*.mdb)};DBQ= C:InetpubwwwrootloginVirtualemdb-databasedatabase.mdb"
Scegliamo infine Mediante driver sul server di prova. Premiamoora Prova ed aspettiamo che Dreamweaver risponda con: Connessioneeffettuata correttamente. In caso di messaggio di errore ricontrolliamoi passaggi eseguiti.
Creiamo ora un modulo nella pagina corrente: inseriamo un modulo, una tabella,2 campi di testo, un pulsante e del testo come in figura:
|
Vogliamo ora rinominare i campi di testo ed il pulsante.
- Clicchiamo sul primo, nel pannello Properties in fondo alla pagina cerchiamo la casella CampoDiTesto e scriviamci nome.
- Ripetiamo il procedimento con il secondo campo di testo e nominiamolo password.
- Infine clicchiamo sul pulsante e scriviamo Entra nella casella Etichetta del pannello Properties.
Apriamo ora il pannello Application (sulla destra dello schermo), accediamo alla scheda Comportamenti server, premiamo il pulsante + e scegliamo Autenticazione utente > Esegui login utente.
Appare un pannello che dobbiamo compilare in questo modo:
|
Scegliamo infine Ok.
Ok ma in sintesi cosa significa? Abbiamo appena "detto" a Dreamweaverche deve leggere i dati inseriti dall'utente nel form1 (èil modulo che abbiamo appena creato). In particolare dovrà considerarecome nome il testo che l'utente inserità nel campo nomee come password il testo che inserirà nel campopassword.
Bene, successivamente il sito dovrà aprire il database individuato dallaconnessione che abbiamo chiamato mioDatabase ed accedere allatabella utenti considerando le colonne Nomee Password.
Se sarà presente una riga (o tupla) corrispondentea nome e password appena immessi dall'utenteallora quest'ultimo riceverà il diritto di accesso e verrà inviatoalla pagina riservata.asp. Se invece nel database non sonopresenti la coppia nome e password appenainseriti, allora l'utente verrà inviato alla pagina errore.asp(ed ovviamente non riceverà il diritto di accesso!).
Salviamo la pagina corrente come login.asp. Questo era il passo più delicato: il resto della procedura è molto piùsemplice.
Abbiamo visto come installare il supporto ASP per il proprio computer, come utilizzare un database Access e come creare il primo file di login. Ora vedremo come creare i file di errore e l'elenco degli utenti.
Il file errore.asp
Creiamo ora una nuova pagina (sempre del tipo ASP JavaScript)
nella quale scriveremo un messaggio di errore del tipo
Stai tentando di accedere ad una pagina riservata
ma non possiedi i diritti per farlo! |
Salviamo la pagina come errore.asp. Sarà utile inoltre
aggiungere un link che da questa pagina porta a login.asp.
Il file riservata.asp
Creiamo una nuova pagina (ASP JavaScript) e digitiamo qualcosa
del tipo:
Questa è una pagina riservata.
Complimenti: hai ottenuto l'accesso! |
Accediamo ora al pannello Application (sempre sulla sinistra
dello schermo), scegliamo la scheda Comportamenti server, il
pulsante + e quindi Autenticazione utente > Limita l'accesso alla
pagina.
Scegliamo Limita in base a: Nome utente e password.
Selezioniamo poi In caso di accesso negato, vai a: errore.asp.
Salviamo la pagina con nome riservata.asp.
In sintesi abbiamo appena "detto" che questa pagina può essere
visualizzata solo dagli utenti che hanno ottenuto il diritto di accesso alle
pagine riservate (ovvero che hanno superato con successo la pagina login.asp).
A questo punto possiamo creare varie pagine di questo tipo e tutte saranno
accessibili solo dagli utenti che hanno un nome e password validi.
Prove in locale
Non rimane che trasferire il sito sul server
di prova ovvero nella cartella virtuale e testarne
il funzionamento.
Per farlo accediamo al pannello Files e scegliamo la scheda
Sito. Dal menù a comparsa di destra scegliamo Server
di Prova, selezioniamo la prima riga (quella che indica il percorso
dela cartella remota) ed infine scegliamo Sito > Carica.
Quando Dreamweaver avrà caricato il sito sul server di prova possiamo
iniziare il test.
Sempre dallo stesso pannello clicchiamo una volta sulla pagina riservata.asp
e premiamo F12 (sulla tastiera) per visualizzarne un'anteprima.
Se tutto funziona correttamente non otterremo l'accesso alla
pagina che abbiamo scelto e saremo reindirizzati sulla pagina errore.asp.
Bene: chiudiamo il browser e riproviamo!
Visualizziamo l'anteprima della pagina login.asp, immettiamo
un nome e password scorretti e scegliamo Entra. Ancora una volta saremo reindirizzati verso la pagina errore.asp:
bene!
Riproviamo ancora a caricare la pagina login.asp e questa
volta inseriamo nome e password corretti (quelli che avevamo inserito nel database
erano paperino e rosso). Premiamo Entra
e finalmente avremo accesso alla pagina riservata.asp.
Se tutto funziona correttamente non resta che trasferire il sito online. Consideriamo
che per farlo dovremo modificare la stringa di connessione perché la
posizione del database cambierà. Possiamo risolvere il problema con il
metodo Server.MapPath.
I livelli di accesso
Ora siamo in grado di creare delle pagine riservate agli utenti autorizzati.
Costruendo una procedura di login nel modo appena descritto possiamo dividere
tutti gli utenti in 2 categorie: quelli autorizzati e quelli
non autorizzati.
Questo potrebbe non essere sufficiente. Infatti potrebbero esistere più
categorie di utenti come ad esempio:
- amministratore: può accedere a tutte le pagine riservate
- utente autorizzato: può accedere solo ad alcune
pagine riservate - utente non autorizzato: non può accedere alle pagine
riservate
Vediamo velocemente come implementare queste modifiche.
Dobbiamo innanzitutto modificare la tabella utente del database
aggiungendo un campo TipoUtente:
Nome | Testo |
Password | Testo |
TipoUtente | Numero |
Per convenzione indicheremo ora con il numero 1 l'amministratore
e con il numero 2 l'utente autorizzato.
Apriamo la tabella e decidiamo di rendere l'utente paperino
un utente autorizzato: dobbiamo inserire 2 nel campo TipoUtente.
Dopo aver salvato il database apriamo con Dreamweaver la pagina login.asp.
Accediamo al pannello Application > Comportamenti Server
e facciamo doppio clic su Esegui login utente.
Nella finestra che appare modifichiamo l'ultima voce mettendo il segno di scelta
accanto a: Nome utente, password e livello di accesso. Scegliamo
inoltre TipoUtente dal menù a scorrimento. Confermiamo
con Ok.
Salviamo la pagina login.asp ed apriamo la pagina riservata.asp.
Accediamo al pannello Application > Comportamenti Server
e facciamo doppio clic su Limita l'accesso alla pagina().
Selezioniamo l'opzione Nome utente, password e livello di accesso.
Clicchiamo ora sul pulsante Definisci, digitiamo 1 nella casella
Nome e poi premiamo +. Ripetiamo ditigando 2 e premendo ancora
+. Confermiamo con Ok.
Ora Dreamweaver "capisce" che esistono 2 tipi di utenti autorizzati.
Quelli a cui è associato il numero 1 (noi sappiamo che sono gli amministratori)
e quelli a cui è associato il numero 2 (sono gli utenti autorizzati).
Notiamo infatti che nel riquadro bianco è comparso il numero 1 ed il
numero 2.
Dobbiamo ora selezionare 1 se vogliamo rendere la pagina accessibile solo agli
amministratori, il 2 se vogliamo renderla accessibile solo agli utenti autorizzati
ed entrambi i numeri se vogliamo renderla accessibile ad amministratori ed utenti
autorizzati.
Ovviamente potremmo creare un numero maggiore di tipi di utente
usando la procedura descritta in questa pagina. La struttura del database deve
rimanere immutata e basta assegnare un numero ad ogni categoria di utenti.
La procedura di logout
Quando l'utente immette un nome e password corretti viene creata una variabile
di sessione che lo definisce idoneo ad accedere alle
pagine riservate. Questa variabile di sessione rimane in memoria e permette
all'utente di abbandonare temporanemanete le pagine riservate, visitare altre
pagine libere e poi tornare alle pagine riservate senza dover nuovamente effettuare
il login.
Vediamo ora come cancellare questa variabile di sessione con una procedura
di logout. Successivamente al logout l'utente non viene più
riconosciuto dal sito. Per accedere ancora alle pagine riservate dovrà
passare nuovamente attraverso la pagina login.asp.
Esistono 2 modi per implementare la procedura di logout.
Il primo metodo prevede la creazione di un link. Cliccando su di esso l'utente
perde la variabile di sessione e viene reindirizzato verso una pagina a nostra
scelta.
Metodo 1
Apriamo riservata.asp con Dreamweaver e posizioniamo il cursore
in un punto libero della pagina.
Accediamo al pannello Application ed alla scheda Comportamenti server.
Premiamo il pulsante + e scegliamo Autenticazione utente >
Esegui logout utente.
Nella finestra che appare è già selezionata la prima opzione: bene. Dobbiamo solo specificare quale pagina dovrà essere caricata dopo il logout. Digitiamo logoutEseguito.asp nella casella bianca e scegliamo Ok.
Notiamo che all'interno della pagina corrente è apparso il link Esegui logout.
Salviamo la pagina corrente e creiamo una nuova pagina nella quale scriveremo
qualcosa del tipo:
Logout eseguito. Per accedere nuovamente alle
pagine riservate devi usare la pagina di login. |
Salviamo questa pagina con nome logoutEseguito.asp.
Metodo 2
Questo procedimento è abbastanza intuitivo, in sintesi bisogna:
- creare una pagina eseguiLogout.asp e mantenerla aperta
in Dreamweaver - accedere al pannello Application ed alla scheda Comportamenti
server - scegliere + e quindi Autenticazione utente > Esegui
logout utente - nella finestra che appare basta scegliere Viene caricata la pagina
e digitare logoutEseguito.asp nella solita casella
di testo
Abbiamo appena creato una pagina che, appena caricata, esegue il logout automaticamente e poi reindirizza l'utente verso logoutEseguito.asp. Ora basterà creare un link che da una pagina qualunque porta alla pagina eseguiLogout.asp.