Offrir la déconnexion sur tous les appareils
2020-04-02 12:42:47
par François Parisien
Contexte
Nous sommes à l’air des multiples périphériques. Chaque utilisateurs est susceptible d’utiliser son téléphone portable, son ordinateur et sa tablette pour accéder à votre site web.
On ne peut donc plus gérer les sessions utilisateurs comme nous le faisions autrefois. Il faut pouvoir identifier la provenance pour donner un maximum d’option à l’utilisateur.
Qu’arrive-t’il si une connexion est active sur un appareil, dont l’utilisateur n’a plus le contrôle ?
Description du besoin
Un utilisateur ayant la possibilité de se connecter au site web doit pouvoir gérer la connexion sur les divers périphérique qu’il a utilisé. Il doit pouvoir demander à ce qu’un périphérique se déconnecte de son compte lorsque demandé.
Requis technique
Connaissances requises
- Manipuler des données dans une base de données SQL;
- Manipuler des cookies
Description du fonctionnement
Pour parvenir à créer ce fonctionnement, il faudra revoir un peu le principe de connexion et déconnexion d’un utilisateur.
En gros, lorsque l’utilisateur voudra se connecter, on génèrera un token unique qui sera sauvegardé dans la base de données. Ce token devra être relié au compte utilisateur. On sauvegardera aussi ce token dans un cookie.
À chaque fois que l’utilisateur chargera une page, on vérifiera si ce token existe dans la base de données. Si oui, on saura que cet utilisateur est connecté à un compte spécifique.
Lorsque l’utilisateur voudra se déconnecter d’un appareil, on va effacer ce token de la base de données. Ainsi, lorsque l’appareil chargera une page, le token ne sera plus trouvé et donc, aucune connexion à un compte ne sera effectif.
Les étapes à faire
-
Créer une nouvelle table SQL. Cette table contiendra toutes les connexions. Elle devra avoir, au minimum, ces champs :
- Token : le token unique de l’utilisateur;
- User Id : l’Id de l’utilisateur associé à ce token. Il s’agit de l’id du compte membre ici;
- Date de connexion : La date de la dernière utilisation du token.
- Au moment de la connexion de l’utilisateur à son compte membre, on devra générer un token unique qu’on sauvegardera dans un cookie et qu’on sauvegardera aussi dans cette nouvelle table;
- Lors de la déconnexion volontaire de l’utilisateur, il faudra veiller à supprimer le token de la base de données et supprimer le cookie aussi;
- Lorsque l’utilisateur naviguera sur le site, à chaque chargement de page, il faudra analyser si le token contenu dans le cookie est toujours dans la table SQL. S’il ne l’est pas, il faudra considéré l’utilisateur comme étant un utilisateur non connecté;
-
Pour permettre à l’utilisateur de se déconnecter sur tous les appareils, on peut proposer un nouveau lien appelé « Déconnexion sur tous les appareils ». Ça sera une page, qui, une fois appelé par l’utilisateur, fera ce travail :
- Suppression de tous les tokens relié au User Id de l’utilisateur chargeant la page;
- Suppression du cookie;
Aller plus loin
- On pourrait sauvegarder, dans la table des tokens, plus d’informations. Par exemple, le navigateur utilisé pour la connexion, l’IP de l’utilisateur, etc. Ensuite, il pourrait être intéressant de fournir à l’utilisateur une liste pour qu’il choisisse quel token il souhaite supprimer et ainsi, éviter d’être déconnecté partout;
- Tant qu’à enregistrer plus de données, pourquoi ne pas notifier par courriel l’utilisateur à chaque génération d’un token ? Avec les données récupéré, il pourra savoir si une action frauduleuse se passe sur son compte ou pas;
- Il serait intéressant aussi de faire du ménage automatique dans la table des tokens. Par exemple, une session qui est vieille d’un mois par exemple pourrait être supprimée. Cela renforcerait la sécurité et éviterait qu’une session reste ouverte trop longtemps sans activité.