Laboratorio di Sistemi Prototipo autenticazione utente Jsp [Java]

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Laboratorio di Sistemi Prototipo autenticazione utente Jsp [Java]"

Transcript

1 Vogliamo realizzare un prototipo di applicativo web che consenta a un gruppo di utenti di autenticarsi. In prima istanza, carichiamo in memoria tutti gli utenti ammessi ad accedere al sistema, in seconda battuta, sostituiremo questa lista di utenti con una tabella utenti di un database MySQL. Facciamo inoltre qualche controllo sui dati introdotti, come si intuisce facilmente osservando le figure. In maniera analoga non possiamo lasciare vuoto il campo username. Se l'utente si trova nell'elenco, vengono visualizzate altre informazioni relative a quell'utente. Altrimenti viene visualizzato un messaggio di impossibilità a proseguire. autenticazione_2.pdf Pag. 1/8 Cozzetto

2 Se username e password coincidono con le informazioni memorizzate, l'utente si è loggato correttamente e può accedere alle informazioni a lui riservate. Se si tenta di accedere alle pagine riservate senza effettuare il login, appare un avviso e dopo pochi secondi l'utente viene rediretto verso la home page. autenticazione_2.pdf Pag. 2/8 Cozzetto

3 Prima di tutto, creiamo due javabean, uno relativo all'utente l'altro relativo agli utenti che possono autenticarsi. / Utente.java Created on 3 febbraio 2008, / package passwordpkg; maurizio / public class Utente implements java.io.serializable { private String username; private String password; private String luogodinascita; private String luogodiresidenza; / Creates a new instance of Utente / public Utente() { username="mcozzetto"; password="mcozzetto"; luogodinascita="oria"; luogodiresidenza="roncadelle"; public Utente(String username, String password) { this.username=username; this.password=password; public Utente(String username, String password, String luogodinascita, String luogodiresidenza) { this(username,password); this.luogodinascita=luogodinascita; this.luogodiresidenza=luogodiresidenza; public void setusername(string username) { this.username=username; public void setpassword(string password) { this.password=password; autenticazione_2.pdf Pag. 3/8 Cozzetto

4 public String getusername() { return username; public String getpassword() { return password; public String getluogodinascita() { return luogodinascita; public void setluogodinascita(string luogodinascita) { this.luogodinascita = luogodinascita; public String getluogodiresidenza() { return luogodiresidenza; public void setluogodiresidenza(string luogodiresidenza) { this.luogodiresidenza = luogodiresidenza; // fine classe Utente / ListaUtenti.java Created on 3 febbraio 2008, / package passwordpkg; import java.util.arraylist; maurizio / public class ListaUtenti implements java.io.serializable { private ArrayList<Utente> utenti; / Creates a new instance of ListaUtenti / public ListaUtenti() { utenti = new ArrayList<Utente>(); utenti.add(new Utente("ciccio","ciccio","Roma","Roma")); utenti.add(new Utente("topolino","topolino","Torino","Torino")); utenti.add(new Utente("paperino","paperino","Brescia","Brescia")); autenticazione_2.pdf Pag. 4/8 Cozzetto

5 utenti.add(new Utente("pluto","pluto","Verona","Verona")); utenti.add(new Utente("minnie","minnie","Milano","Milano")); utenti.add(new Utente("paperone","paperone","Campobasso","Campobasso")); public Utente cercautente(string username, String password) throws Exception { if (username.equals("") && password.equals("")) throw new Exception("Attenzione! Non puoi lasciare username e password vuoti."); if (username.equals("")) throw new Exception("Attenzione! Non puoi lasciare il campo username vuoto."); if (password.equals("")) throw new Exception("Attenzione! Non puoi lasciare il campo password vuoto."); for (Utente v: utenti) { if (username.equals(v.getusername()) && password.equals(v.getpassword())) return v; return null; // fine metodo cercautente public ArrayList<Utente> getutenti() { return utenti; public void setutenti(arraylist<utente> utenti) { this.utenti = utenti; // fine classe ListaUtenti File index.jsp <%@page contenttype="text/html"%> <%@page pageencoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp Page</title> </head> <body> autenticazione_2.pdf Pag. 5/8 Cozzetto

6 <h3>login utente</h3> <% // se l'utente è già loggato, facciamo un redirect verso la pagina riservata if (session.getattribute("utente")!=null) response.sendredirect("riservata.jsp"); %> <form name="provafrm" action="${request.requesturi" method="post"> <p>username <input type="text" name="usernametxt" /><br/> Password <input type="password" name="passwordtxt" /><br/> <input type="submit" name="inviabtn" value="invia"/></p> </form> <% if (request.getparameter("inviabtn")!=null) { // carichiamo in memoria gli utenti ammessi ad accedere al sistema // si tratta ovviamente di una semplificazione passwordpkg.listautenti lu=new passwordpkg.listautenti(); String username = request.getparameter("usernametxt"); String password = request.getparameter("passwordtxt"); passwordpkg.utente v; try { // cerchiamo l'utente con username e password indicati v = lu.cercautente(username, password); catch (Exception e) { out.println(e.getmessage()); return; // abbiamo trovato un utente if (v!=null) { // salviamo i dati dell'utente in una variabile di sessione session.setattribute("utente",v); // facciamo il redirect verso la pagina riservata response.sendredirect("riservata.jsp"); else out.println("accesso non consentito. Non sei autorizzato ad accedere alla pagina."); %> </body> </html> autenticazione_2.pdf Pag. 6/8 Cozzetto

7 File riservata.jsp contenttype="text/html"%> pageencoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>pagina riservata</title> </head> <body> <h3>accesso riservato</h3> <% // se tentiamo di accedere alla pagina riservata, veniamo avvisati if (session.getattribute("utente")==null) { out.println("pagina riservata. Non puoi accedere alle informazioni riservate."); out.println("<p>tra pochi secondi verrai rediretto verso la home page. Aspetta per piacere...</p>"); response.setheader("refresh","5; index.jsp"); else { // estraiamo le informazioni salvate precedentemente passwordpkg.utente v = (passwordpkg.utente) session.getattribute("utente"); out.println("benvenuto "+v.getusername()+". Accesso consentito."); out.println("sei nato a "+v.getluogodinascita()+" e risiedi a "+v.getluogodiresidenza()+"."); out.println("<p><a href='logout.jsp'>logout</a></p>"); %> </body> </html> autenticazione_2.pdf Pag. 7/8 Cozzetto

8 File logout.jsp contenttype="text/html"%> pageencoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>pagina di logout</title> </head> <body> <h3>pagina di logout</h3> <% if (session.getattribute("utente")!=null) { passwordpkg.utente v = (passwordpkg.utente) session.getattribute("utente"); out.println("grazie "+v.getusername()+" di aver usato l'applicativo."); session.removeattribute("utente"); session.invalidate(); out.println("<p>tra pochi secondi verrai rediretto verso la home page. Aspetta per piacere...</p>"); response.setheader("refresh","5; index.jsp"); else { response.sendredirect("index.jsp"); %> </body> </html> autenticazione_2.pdf Pag. 8/8 Cozzetto