Devo rilevare il dispositivo dell'utente per il sistema "ricordami"? [chiuso]

-1

Sto seguendo la soluzione n. 1 di questa risposta . Dopo un po ', ci saranno alcune righe ridondanti nella tabella. Supponi questa tabella:

// cookies
+---------+-------------------------+------------------+------------+------------+
|   id    |         email           |     cookie       | date_time  |   device   |
+---------+-------------------------+------------------+------------+------------+
| int(11) |      varchar(50)        |   varchar(128)   |  int(11)   |            |
+---------+-------------------------+------------------+------------+------------+
| 1       | [email protected]     | ojer0f934mf2...  | 1467204523 |            |
| 2       | [email protected]      | ko4398f43043...  | 1467205521 |            |
| 3       | [email protected] | 34fjkg3j438t...  | 1467205601 |            |
| 4       | [email protected]      | 0243hfd348i4...  | 1467206039 |            |
+---------+-------------------------+------------------+------------+------------+

Quindi la colonna email non è univoca e ogni dispositivo ha una propria riga.

La mia domanda: come posso compilare la colonna device ? Devo anche rilevare il dispositivo dell'utente o devo gestirlo in un altro modo?

Perché devo determinare i dispositivi? Da quando un utente rimuove i cookie del browser, il mio sito Web li identifica come nuovo utente e crea una nuova riga per loro nella tabella sopra. Quindi dopo un po ', ci saranno alcune righe ridondanti nella tabella.

Ad esempio: immagina peter ha solo due dispositivi (laptop, telefono) . E ha due file nella tabella sopra. Rimuove i cookie del browser e accede. Cosa succede? Il mio sito Web crea una nuova riga nella tabella sopra. Ora peter ha 3 righe nella tabella sopra (mentre ha solo due dispositivi) . Quindi sicuramente una di queste tre file è ridondante. Ecco perché devo rilevare i dispositivi per rimuovere le righe ridondanti.

    
posta stack 29.06.2016 - 15:38
fonte

1 risposta

1

Non è possibile rilevare in modo affidabile i dispositivi e non è necessario. Usa semplicemente il timestamp per eliminare regolarmente le sessioni che superano le X ore. Nota che è perfettamente soddisfacente disporre di dati ridondanti in una tabella di lavoro come questa, che era la tua preoccupazione originale.

Dovrai farlo comunque poiché le sessioni dovrebbero sempre essere terminate lato server e lato client. Questo è importante per mitigare gli effetti del session theaft.

Se X diventa molto grande, o è infinito (l'utente non è mai disconnesso) questo potrebbe diventare un problema. Ti consiglio comunque di impostare un limite di tempo anche se l'utente controlla "Ricordami". Penso che WordPress usi 14 giorni e Facebook 1 anno.

Ma ti consiglio davvero di usare un framework esistente per questo e non di eseguire il rollover (se stai lavorando su qualcosa che dovrebbe essere usato in produzione). Se si commette un solo errore nello schema di autenticazione, è possibile aprire l'intera app Web in tutto il mondo. In situazioni del genere, è meglio attenersi al provato e vero.

    
risposta data 29.06.2016 - 17:00
fonte

Leggi altre domande sui tag