in http://programmarejava.blogspot.com/ la soluzione descritta fa proprio questo, però tieni conto del fatto che la seconda richiesta puo essere fatta da un secondo client che invalidando la sessione del primo non fa altro che creargli problemi; se a sua volta il primo client rieffettua l'accesso invalida la sessione del secondo e cosi via in modo ciclico... Invece tu devi fare in modo che il primo che usa una coppia (utente/password) sia l'unico a poterlo fare, come se mettesse un lock. Quindi basta semplicemente rifiutare la richiesta di un cliente che usa una coppia (username,password) che risultano gia usate. Adesso che ci penso, per quanto riguarda poi il discorso DB-memoria centrale tieni conto del fatto che nella struttura dati tu copi il riferimento della sessione, quindi anche se le sessioni fossero 100.000 il problema non si pone o almeno l'utilizzo della struttura dati non costituisce il collo di bottiglia... Poi non so quali tecnologie lato server usi tu (io parlo di java e non conosco bene le altre). Per quanto riguarda la chiusura accidentale del browser puoi usare javascript per richiedere il logout o, come ti dicevo, fare in modo che il server riconosca la sessione da associare al client attraverso i cookie ricevuti con la richiesta (in java puoi usare il test request.getSession(false)!=null ), che ovviamente l'utente non dovrebbe cancellare dopo la chiusura del browser. Quando ho un pò di tempo aggiorno il blog per il problema da te definito che credo sia abbastanza diffuso.Originariamente inviato da puyer
Se invece facessi in modo di accettare sempre la richiesta, anche quando l'utente è gia loggato...l'unico inconveniente è che dovrei chiudere la sessione rimasta appesa dalla chiusura precedente accidentale del browser---

Rispondi quotando