PDA

View Full Version : [Asp .NET]Gestire login con 3 tipi di utenti


Samb1985
13-01-2010, 19:31
Ho una web application che utilizza un db Access 2003. Username e Password dei diversi utenti si trovano nel database e sono previsti tre tipi di utenti: user1, user2, user3. In base al tipo di utente ci sono diversi privilegi.

Quindi ho bisogno di far si che sia possibile recuperare il tipo di utente che ha effettuato il login su ogni pagina del sito, per abilitare o meno le diverse funzionalità in base al tipo di utente.
Ho bisogno quindi di creare una sessione dell'utente che fa login e tenerla finchè visualizza il sito, in modo che sul load di ogni pagina vado a controllare il tipo di utente e faccio le opportune modifiche.

Come e dove posso memorizzare le informazioni (Username e tipo Utente) dell'utente che ha effettuato il login ?
Anche prevenendo eventuali errori nel caso siano presenti più utenti nello stesso momento.

ybla82
14-01-2010, 13:35
Ti conviene memorizzare tutto in sessione, più precisamente nell' ogetto Session.

Ti crei una classe Utente:

public class Utente
{
private string m_sUser;
public string User
{
get{return m_sUser;}
set{m_sUser = value;}
}


private int m_iTipoUtente; //eventualmente puoi usare un enum
public int TipoUtente
{
get{return m_iTipoUtente;}
set{m_iTipoUtente= value;}
}

}


Questo oggetto viene creato quando il login ha successo.
Creato l'oggetto lo metti in sessione così:



Utente oUtente= new Utente();
oUtente.User = "pipposantanastasamoto";
oUtente.TipoUtente = 1;
HttpContext.Current.Session["CurrentUser"] = oUtente;



Per recuperare le info sull'utente, nel Page_load delle pagine interessate..



Utente oUtente = HttpContext.Current.Session["CurrentUser"] as Utente;
if(oUtente.TipoUtente == 1)
showPanel1();
if(oUtente.TipoUtente == 12)
showPanel2();





L'oggetto Sessione è unico per ogni istanza del browser avviato che si collega alla tua web application, quindi nn si rischiano conflitti.

Samb1985
15-01-2010, 00:59
credo proprio faccia al caso mio...domani lo provo ...

Samb1985
15-01-2010, 15:46
Ottima soluzione. Funziona. Grazie mille !!!