Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    97

    al più una sessione per utente

    Salve,
    mi sapreste dire se, ed eventualmente come, si può far si che un utente che accede da un pc alla mia webapp non può accedere da un altro pc alla stessa webapp con le stesse credenziali.

    Grazie

  2. #2
    cioè che finché non fa logout non acceda più da un altro posto?

    Beh, quando un utente fa login salvati l'IP ed Session ID che usa nel db, mentre quando fa logout li azzeri, poi quando uno cerca di fare login con le credenziali di un utente, se l'IP o il Session ID sono diversi da quelli nel db e nel DB non sono nulli, fai uscire una pagina con scirtto : "Sei già loggato da un'altra parte PISTOLA! clicca qui per effettuare il logout"

  3. #3
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Io seguirei un altro metodo, in db salverei per l'utente loggato il session_id, poi se ti rilogghi salvi il nuovo session_id. Poi nelle tue pagine private controlli non solo se l'utente è loggato, ma anche che l'id di sessione corrisponda a quello che hai sul db, altrimenti distruggi la sessione.

    In questo modo il primo utente si logga, viene registrato il suo session_id, il secondo utente si logga viene sovrascritto il session_id, e cosi per il primo utente verrà distrutta la sessione mentre per il secondo sarà valida.

    In questo modo scoraggi un utente a fornire le proprie credenziali ad altri, perchè ogni volta che un altro utente entra lui verrà sbattuto fuori (probabilmente poi lui si loggherà nuovamente sbattendo fuori il secondo utente, rendendo di fatto quasi impossibile lavorare sulla tua web app in contemporanea).

    ciao

  4. #4
    Farlo così in trasparenza, io non penso sia una buona idea. L'utente deve sapere che era autenticato su di un'altra macchina, perché così, se era lui viene cazziato per non essersi disconnesso, ma, se non era lui, si rende conto che gli hanno forato i dati di autenticazione e contatta chi di dovere per farseli cambiare.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    97
    utilizzando il metodo di artorius, nel caso in cui un utente non fa il logout ma semplicemente chiude il browser, il db nn viene aggiornato, vale a dire che l'utente in questione nn si può connettere da un'altra postazione se prima nn si rilogga dalla postazione precedente ed esegue correttamente il logout...

    ...la soluzione di gianiaz nn da di questi problemi ma nn è esattamente quello che mi serve!

    altre idee?

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Infatti il mio metodo era per evitare quella possibilità.

    Forse puoi mischiare le due idee.

    Registri solo il session_id, se l'utente si rilogga da un'altra postazione, gli segnali che c'è già l'utente attivo e che se ti logghi lo butti fuori, cosi dai la possibilità di fermarsi.
    Nel caso l'utente voglia comunque procedere ti fai dare nuovamente la password per conferma e procedi come nell'esempio che ti avevo dato.

    In questo modo comunque non precludi l'accesso alla piattaforma (ad esempio se il browser va in crash non riprendi la stessa sessione, quindi ti eviti il problema dei log in autorizzati), ma anche nel caso in cui l'utente non è autorizzato (o come vuoi definire i doppi accessi che vuoi evitare).

    Purtroppo il punto è che l'ip non è un valore attendibile, il session id non cambia solo da postazione a postazione, e non puoi sapere se l'utente esce dalla piattaforma senza aver fatto il logout.

    Un'altro compromesso potrebbe essere registrare il timestamp di quando si logga e l'id di sessione. Se cerca di loggarsi da un'altra postazione glielo vieta, almeno finchè non scade la sessione dell'altro utente (ad esempio time_start + 10 minuti).
    In questo modo chi è loggato accede perchè ha l'id di sessione, chi si vuole riloggare non può, rimane il problema del crash del browser (l'utente anche se sulla stessa postazione dovrebbe aspettare nel peggiore dei casi 10 minuti per poter accedere).

    Queste sono le possibilità, di meglio non so se si può fare.

    [edit]
    quando scrivo di registrare il time_start intendo dire che a ogni operazione dell'utente loggato all'interno dell'area protetta dovrai aggiornare questo valore, in modo che finchè l'utente utilizza la piattaforma avrà l'esclusiva.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.