web-dev-qa-db-fra.com

Session dans les services Web RESTful, comment ça marche?

Dans un service Web, comment le serveur sait-il quelle demande appartient à quelle session?

Je sais que pour une application Web, le serveur Web inspecte le cookie (ou le paramètre de requête sessonId au cas où les cookies sont désactivés) afin de savoir à quelle session la demande est associée. Mais pour une demande qui vient d'un client de repos, comment le serveur sait-il?

7
dnang

Si vous devez vraiment avoir la gestion des sessions dans votre API, le client sera responsable de gérer le session_id et de l'ajouter à l'URL si nécessaire. La manière exacte de gérer cela dépendra de votre pile technologique. Par exemple Rails utilise par défaut les cookies mais (si activé) accepterait également un paramètre _session_id dans le cadre de l'URL.

Les informations pertinentes normalement stockées dans le cookie ainsi que l'ID de session doivent alors être traitées par le serveur. Dans Rails, vous devez basculer le stockage de session du stockage des cookies vers l'une des options du serveur, comme le stocker dans la base de données ou memcached avec l'identifiant de session comme clé.

Mais vous devriez vraiment réfléchir à deux fois si vous souhaitez ajouter cette fonctionnalité à votre API. Être apatride rendra votre API plus simple et plus facile à maintenir. Si possible, il est préférable de laisser le client se préoccuper de l'état et d'envoyer toutes les informations nécessaires à chaque demande. (comme utiliser l'authentification HTTP de base au lieu de stocker un utilisateur actuel dans une session).

8
thorsten müller