3 votes

Puis-je utiliser des sessions/cookies dans Ruby on Rails sans avoir de modèle d'utilisateur ou d'authentification ?

Je suis en train de créer un jeu de quiz dans Rails et je voudrais créer une session pour stocker les données de l'utilisateur actuel afin de garder la trace du nombre de questions auxquelles il a répondu correctement. Tous les tutoriels que j'ai cherchés demandent de se connecter d'abord puis de générer une session. Puis-je le faire sans cela ?

Edit : En fait, je voulais savoir si c'était possible sans avoir de modèle d'utilisateur du tout ?

4voto

papirtiger Points 1870

Oui. Le mécanisme de stockage de session de rails relie simplement un identifiant de session à un stockage de session (cookie par défaut).

Cela fonctionne comme suit : lorsqu'un utilisateur visite votre application pour la première fois, rails génère un identifiant de session qui est un long hash. L'identifiant est stocké par rails sur le serveur et envoyé à l'utilisateur dans un cookie.

Lors des requêtes suivantes de l'application, le middleware de sessions de Rails recherchera l'identifiant dans les cookies de l'utilisateur et, s'il est valide, il décryptera le cookie de stockage de session et l'ajoutera à la session de Rails. Rails fait tout cela par défaut sans que vous ayez à lever le petit doigt.

Vous pouvez utiliser ce stockage de session pour n'importe quelle donnée arbitraire tant qu'elle ne dépasse pas la limite de 4k imposée par les navigateurs sur les cookies. L'utilisation d'un autre stockage comme Redis/Memcached ou un stockage de base de données vous permet de stocker plus de données au prix d'une légère baisse de performance.

La raison pour laquelle on le voit souvent lié à l'autorisation est que les cookies sont en quelque sorte le moyen par défaut de relier un identifiant d'utilisateur sur le serveur avec l'utilisateur actuel derrière le navigateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X