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 1.0/1.1
Login univoche
venerdì 14 maggio 2004 - 10.55
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
FrancescoGuadagno
Profilo
| Senior Member
224
messaggi | Data Invio:
ven 14 mag 2004 - 10:55
Ciao, ho un problema con la procedura di LOGIN alla mia applicazione Web.
Ogni volta che un utente effettua il login nella pagina, viene creata una variabile di Sessione che contiene il codice dell'utente che si è collegato. Inoltre, per altri motivi di sicurezza, nel mio db salvo anche in una tabella "LOGGED_IN" i codici degli utenti connessi. Alla pressione di un pulsante di Logout, chiudo l'applicazione e cancello nel db la riga relativa a quell'utente.
Il mio problema si presenta nel caso in cui l'utente non chiude l'applicazione con il pulsante di logout ma con la "X" del browser. Non è possibile in .NET (a quanto ne so) intercettare questo evento, trattandosi di un evento "client" quindi gestibile al massimo con js. Di conseguenza, se l'utente si ricollega all'applicazione con la stessa login, il controllo sul db mi restituisce che l'utente è ancora collegato, non avendo cancellato l'utente dalla tabella.
Ho proposto a questo punto come soluzione quella di cancellare all'atto della login l'eventuale codice dell'utente che si sta collegando, dal db. Questa soluzione non è stata accettata, perchè, per assurdo, deve essere possibile che un utente che effettua il login, possa trovare il suo stesso login collegato, riconoscerlo e restituire un messaggio. Di conseguenza non entra nell'applicazione.
Le soluzioni a cui avevo pensato sono quindi 3:
1) inserire nel tag body l'intercettazione dell'evento "ONUNLOAD" e far partire uno script js che legga la mia variabile di sessione contenente il mio codice utente, effettui una connessione al db del server e cancelli la riga interessata nella tabella LOGGED_IN
2) All'atto della LOGIN, controllare in qualche modo se esiste nella collection delle variabili di sessione istanziate, una variabile Session["COD_UTENTE"] uguale a quello che si sta collegando in quel momento. Ma non so come nè se è possibile farlo. Con questa soluzione eliminerei tra l'altro la scrittura sul DB dell'utente loggato.
3) Potrei usare un array come variabile di applicazione in cui registro di volta in volta gli utenti che si connettono, ma come fare a gestire l'eventuale utente che nella variabile di applicazione risulta collegato ed in realtà ha chiuso l'applicazione semplicemente chiudendo il browser e non con il logout?
Avete qualche idea? Capisco che stiamo parlando di un caso a dir poco improbabile visto che la login è univoca e strettamente personale... ma è un caso purtroppo che devo gestire
Giulz
Profilo
| Newbie
27
messaggi | Data Invio:
ven 14 mag 2004 - 11:25
soluzione 4:potresti utilizzare i cookie -se te lo consentono- In fase di login l'applicazione ti scrive sul client un cookie con la tua sessione (id, etc), dopodichè ad ogni richiesta al server potrai essere autenticato (..Request.Cookies[]..)
In fase di logout devi intercettare l'unload e richiamare uno script che disabiliti il cookie..e il db lo lascerei stare..
saluti
FrancescoGuadagno
Profilo
| Senior Member
224
messaggi | Data Invio:
ven 14 mag 2004 - 14:03
no...i cookie purtroppo non sono consentiti...
Giulz
Profilo
| Newbie
27
messaggi | Data Invio:
ven 14 mag 2004 - 14:20
io una volta ho usato questo escamotage:
intercetti l'unload, fai partire un js del tipo window.open('logout.aspx'); opp window.navigate('logout.aspx'); da provare, quindi hai forzato un postback, a questo punto nel page_load della tua pag 'logout.aspx' potrai svuotare la Session, la tabella ect.
So che è un po' una forzatura ma funziona e poi io nn sono un programmatore
saluti
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 !