Newsgroup: it.comp.java
Titolo: fine di una sessione

Ho una serie di servlet caricate su WebSphere Application Server.
Sono protette in modo tale che vengano richiesti nome/passwd per
caricarle. Ovviamente una volta che un utente passa l'autenticazione,
le sue "credenziali" vengono messe in sessione di modo da non chiederle
di nuovo ogni volta che si passa da una finestra all'altra. Tutto
questo è fatto in automatico tramite LDAP. Il mio "problema" è che
un certo username può essere utilizzato "da un solo utente per volta",
cioè se "pippo" è stato autenticato e stà navigando, provando ad
entrare come "pippo" da un'altra macchina o da un'altra finestra
del web-browser deve negare l'accesso. Mi è stato detto che questo
controllo non può essere automatizzato come il primo. E' vero? (a me
sinceramente sembra strano...). Conoscete un modo per poterlo
implementare via software? Avevo pensato di condividere dei dati fra
le servlet, tipo elenco degli utenti connessi, così da effettuare
un secondo controllo -dopo la finestra LDAP- e verificare che uno
username non sia già in uso. Mi rendo conto che non sia la soluzione
più elegante, ma ho una certa fretta di risolvere e altri idee non mi
sono venute. Nasce però il problema: inserire un utente nella lista
degli utenti connessi è semplice, condividere questa lista (varibile
statica della servlet) pure, ma come faccio ad intercettare la fine di
una data sessione, per sapere quando uno username deve tornare ad
essere disponibile? I pochi metodi di HttpServlet e Session che
potessero essere in qualche modo utili sono tutti deprecati "per motivi
di sicurezza" e non più supportati....
voi come fareste?
Un ringraziamento a chiunque possa chiarirmi un po' le idee,
...e scusate il post un po' lungo!
Matteo
-- 
Posted from 151.20.11.0 by way of 
smtp1.libero.it
 [193.70.192.51] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Un ringraziamento a chiunque possa chiarirmi un po' le idee,
Le questioni che hai posto sono di quelle non ancora del tutto risolte
e comuque anch'io ho dato una risposta frettolosa, quindi apprezzerò
chiunque fornirà idee più "geniali" :-)

essere disponibile?
A proposito, forse conviene creare un oggetto User che implementa
l'interfaccia HttpSessionBindingListener e quindi i metodi
public void valueBound(HttpSessionBindingEvent event)
public void valueUnbound(HttpSessionBindingEvent event)
Il primo metodo sarà chiamato quando l'oggetto User viene salvato
nella sessione, mentre il secondo quando l'oggetto sarà rimosso
(HttpSession.removeAttribute()) oppure quando la sessione termina
automaticamente per time-out.
Ciao

 l'interfaccia HttpSessionBindingListener
Prima di tutto grazie x la risposta. In realta` avevo gia` risolto
sabato, e proprio con HttpSessionBindingListener: ho trovato qualcosa di
interessante su 
http://www.philhanna.com/
 . Se dai un'occhiata ai
sorgenti (~200k da scaricare) ci troverai la classe 'SessionMonitor',
che implementa proprio quanto tu suggerisci. Alla fine ho scelto x la
soluzione piu` semplice (anche se non mi sembra proprio "efficiente"
visto il carico di utenza che si prevede dovra` avere l'applicazione...)
: mantengo la lista degli utenti connessi (per ora in memoria, poi se
non trovo alternative mi appoggero` ad un DB) che viene aggiornata
tramite questo 'monitor': ad un primo test *sembra* funzionare...
-- 
Ciao,  |  I play Russian roulette everyday, a man's sport,
Matteo |  With a bullet called life, yeah called life (SUGAR)