2017-03-19 1 views
0

Je regarde la possibilité de mettre en place une option pour garder les utilisateurs connectés. Maintenant, je comprends qu'une session pourrait être utilisée pour permettre à un utilisateur naviguer sans ré-entrer les informations de connexion sur chaque page seulement jusqu'à ce que le navigateur soit fermé et la session est perdue. Un cookie est stocké côté client et a une durée jusqu'à ce qu'il expire ou l'utilisateur supprime le cookie.Est-ce une bonne idée d'utiliser une combinaison de cookies et des sessions pour garder les utilisateurs connectés

Je pensais que je pouvais utiliser une combinaison des deux

  1. Créer une table db (id, user_id, cookie_token, is_active)
  2. utilisateur ouvre une session qui crée une ligne dans la table db connexion l'utilisateur à cookie_token qui est également stocké sur le navigateur client (système).

    • Chaque fois qu'un jeton est créé, vérifiez si l'utilisateur le jeton est créé pour a des jetons actifs dans le système déjà mis et les inactifs avant un nouveau est créé.
    • Un seul jeton peut être actif par utilisateur

Ainsi, chaque fois que l'utilisateur visite le site, le système recherche jusqu'à ce jeton et vérifie is_active champs, Si le user_token se trouve et is_active = 1 ou true, les données de l'utilisateur sont récupérées (identifiant, nom, etc) et cela crée alors la session et les variables de session. Je ne suis pas en mesure de trouver des questions ou des réponses qui utilisent une combinaison des deux, donc il pourrait être que c'est juste exagéré ou une très mauvaise idée, je viens de commencer à lire sur les sessions et les cookies et ont essayé de trouver un système que je pourrais mettre en place moi-même serait donc agréable de savoir si c'est bon ou mauvais.

+0

Vous vous dirigez la bonne direction, mais il est comme invalidant la session/déconnecter l'utilisateur lorsque le jeton de cookie n'existe pas dans la db ou est marqué inactif. –

+0

@dnFer c'est correct mais non? Une session ne peut pas être créée sauf s'il existe un jeton de cookie valide. Donc, aucun jeton de cookie valide ne signifie que l'utilisateur n'est pas connecté. Sans un jeton valide, il n'est pas nécessaire d'utiliser une session et le site Web peut être consulté normalement sans données spécifiques à l'utilisateur. C'est ce que tu veux dire? – Amar

+0

@dnFer Ah Je vois ce que vous voulez dire, il invalide la connexion s'il y a un jeton actif dans la table db et qu'un nouveau est créé. Ainsi, avant qu'un jeton soit ajouté au système, vérifiez si cet utilisateur possède un jeton actif dans la table, définissez-le sur inactif avant que le nouveau soit créé. Je vais modifier ma question pour inclure cette – Amar

Répondre

0

Je ne peux plus répondre en tant que commentaire, parce que ma réponse serait trop longue ... J'ai implémenté quelque chose comme suit. Malheureusement, je ne me souviens pas précisément, mais il vous donnera une assez bonne idée:

visite avant connexion manuelle:

  • Démarrer une session.
  • Lors de la connexion réussie, stockez une identification d'utilisateur dans cette session et stockez une valeur de jeton dans le dB et dans le cookie.

La prochaine fois que le navigateur visite la page:

  • (re) démarrer la session.
  • Vérifiez si une identification d'utilisateur est définie dans cette session.
    • Si tel est le cas, connectez-vous automatiquement à l'utilisateur qui correspond à l'identification.
    • Si ce n'est pas le cas (expiration de la session ou expiration du navigateur), vérifiez si une valeur de jeton est stockée dans le cookie et si cette valeur correspond à une valeur de jeton stockée dans le dB.
      • Si une correspondance (non expirée) est trouvée, connectez-vous automatiquement à l'utilisateur et supprimez les anciens jetons.
      • Si l'identification de l'utilisateur est invalide et la valeur du jeton est expirées/invalide:
        • fermeture de session de l'utilisateur (qui contient toutes les actions pour revenir en mode « public », comme la destruction de la session, la suppression des jetons, les cookies, etc. .).
+0

Inspiration de https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet#Remember_Me –

+0

Je vais essayer. Merci. – Amar