Potrei accedere tramite il sito web, l'app per android, l'app per iOS, i browser su dispositivi mobili e quando esco da uno, non mi disconnette da tutti. Tradizionalmente, si disconnetteva da tutti i servizi contemporaneamente perché il tuo auth_token sarebbe stato impostato su null nel DB. Detto questo, non vedo un modo per farlo attraverso Rails e Devise.
Ho solo due soluzioni finora.
Il primo consiste nel disporre di token di sessione separati e di capire quale utilizzare in base a un'intestazione. Tuttavia, se si desidera un numero illimitato di sessioni, è necessario un ID univoco da seguire. Non sono sicuro di come lo otterresti.
La seconda soluzione è quella di avere un contatore nel database chiamato sessioni. Tiene traccia di quante sessioni hai attualmente effettuato l'accesso. Se ho effettuato l'accesso tramite il sito Web, l'app per Android e l'app per iOS, sarebbe 3. Ogni volta che hai più di 1 sessione aperte e disconnesse, il numero di le sessioni sarebbero state decrementate. Se il numero di sessioni diventa 0, impostiamo auth_token su null nel DB (nil in Ruby).
L'unico loop-hole che ho visto in questo è che se qualcuno si disconnette, è ancora connesso su qualche altra piattaforma, ed è esperto di codice, potrebbero trovare il auth_token tramite richieste precedenti sul proprio browser. Quindi, potrebbero inviarlo e continuare a utilizzarlo anche se sono stati scollegati tecnicamente. Non vedo necessariamente un problema con questo, ma non so se questo è un buon modo per farlo.
Qualcun altro ha un buon suggerimento? C'è un posto migliore per postare questo?