Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Sessione e doppio log-in
lunedì 30 luglio 2007 - 08.24
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
gigi90
Profilo
| Senior Member
285
messaggi | Data Invio:
lun 30 lug 2007 - 08:24
Salve a tutti , come da titolo devo implementare un meccanismo che mi permetta di riconoscere il doppio log-in da computer differenti, quindi ho pensato di utilizzari gli eventi legati alla sessione(global.asax) per memorizzare un valore nel database quando l'utente effettua l'accesso, e all'evento Session_End eliminarlo, qui però sorge un problema, se il mio utente chiude il browser, Asp.Net non riconosce più quella sessione(ne crea una nuova) e intanto nel database è rimasto memorizzato quel valore, quindi l'utente dovrà aspettare che la sessione scada(si azzera il campo del database), per ritornare a fare il log-in.
A questo punto la domanda è questa: se io memorizzo l'id della sessione in un cookie, posso recuperare la vecchia sessione che l'utente stava utilizzando?,oppure esiste qualche altro metodo?
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 30 lug 2007 - 09:02
>A questo punto la domanda è questa: se io memorizzo l'id della
>sessione in un cookie, posso recuperare la vecchia sessione che
>l'utente stava utilizzando?,oppure esiste qualche altro metodo?
Ciao gigi,
è sempre complicato fare questa cosa per la natura disconnessa del protocollo HTTP. Allora, direi che la prima parte va bene. Quindi tu puoi immagazzinare lo Username che si logga ed eventualmente la SessionID. Se l'utente chiude il browser senza fare Logoff resta appesa la sessione fino al timeout.
Se l'utente si logga una seconda volta da un altro PC, puoi andare a fare una query sulla tabella di cui sopra e verificare, se c'è già un record dove il nome utente è uguale significa che non può entrare perchè c'è una sessione ancora aperta a suo nome a questo punto puoi proporgli o di attendere la scadenza della sessione o forzare, utilizzando la nuova sessione, e aggiornando il record nel database.
E' chiaro che al Session Timeout devi pulire il record che hai immagazzinato a inizio sessione.
Ti è chiaro ?
ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
gigi90
Profilo
| Senior Member
285
messaggi | Data Invio:
lun 30 lug 2007 - 10:43
Si era quello che intendevo fare io, solamente che io voglio fare il controllo per un solo log-in, quindi quando l'applicazione vedrà il campo del database come se l'utente ha gia fatto il log-in resituirà un messaggio, e l'utente deve aspettare che scade la sessione(15min) al termine della quale si setta il campo del database che mi tiene traccia del login a 0 e l'utente puo rieffettuare l'accesso, ma il problema sussiste quando l'utente chiude il browser e riapre il sito: verrà avviata una nuova sessione, non riconoscendo quella vecchia.
Io vorrei sapere solo se esiste un modo per recuperare una sessione, magari tramite l'id sessione, prima che essa sia scaduta!
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 30 lug 2007 - 21:36
>rieffettuare l'accesso, ma il problema sussiste quando l'utente
>chiude il browser e riapre il sito: verrà avviata una nuova sessione,
>non riconoscendo quella vecchia.
Vero, ma allora per questo è sufficiente un Cookie. Crei un numero random, tipo un intero e inserisci anche quello nella tabella e lo spari all'utente tramite Cookie. Se la persona chiude il browser e lo riapre e cerca di accedere, tu fai la query, vedi che è come se fosse già loggato, verifichi però il numero random nella tabella, fai una Request del cookie, se corrispondono significa che si sta riloggando dalla stessa macchina e allora acconsenti il login.
ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
gigi90
Profilo
| Senior Member
285
messaggi | Data Invio:
mar 31 lug 2007 - 15:21
Ok Grazie molte, sei stato chiarissimo!!!
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !