Je veux souvent effacer le magasin de session dans des rails, en particulier, le magasin de session de cookie par défaut. Certains sites semblent suggérer que
rake tmp:sessions:clear
5 Réponses :
Cela me survient maintenant que ce que je veux peut-être ne pas être possible en fonction de la mise en œuvre du magasin basé sur les cookies. Si les cookies contiennent toutes les informations dont le serveur a besoin (y compris une signature pour l'intégrité des données), le serveur n'a pas besoin de stocker des informations de son côté, il n'existe aucun moyen d'invalider les cookies existants. J'avais supposé que le cookie contenait une clé qui correspondait à des données sur le côté serveur afin de vérifier que le cookie est valide, mais je me rends compte que cela peut ne pas être le cas. P>
Si cela est vrai, le seul moyen de nettoyer les cookies serait de modifier le secret de la cookie côté serveur utilisé pour la signature, puis redémarrez le processus serveur. P>
Modifié config.secret_Token et redémarré le serveur. Les sessions de cookies ont été réinitialisées. Résultat.
Le problème est que les cookies sont du côté du client. Exécution d'une tâche de râteau sur votre serveur ne supprimera pas les cookies sur toutes les machines qui ont visité la page Web, évidemment. P>
Peut-être que vous pouvez utiliser session.clear code> dans vos contrôleurs en quelque sorte? Vous avez raison de changer la clé de cookie, cependant. Cela invaliderait toute session appartenant à l'ancienne clé. Vous devriez sauver de
actionController :: StateSession Code> (ou quelque chose comme ça), mais cela fonctionnerait. P>
Droite, comme j'ai fait allusion dans mon commentaire, j'étais sous l'impression erronée que le cookie ne conserve que quelque sorte de jeton de session entre le client et le serveur et que le jeton est également stocké sur le côté serveur afin de valider le client. jeton ou les données sont sur le côté serveur. Temporairement, j'ai juste une solution de contournement dans mon code pour ignorer la session. Peut-être que la chose la plus facile est de passer à un magasin de biscuits soutenu sur des bases de données pour l'environnement de développement (je souhaite effacer les sessions juste à des fins de développement).
changer le nom du cookie de session. Cela ne supprimera pas les vieux cookies, mais cela obligera tout le monde à obtenir un nouveau cookie de session. P>
Vous pouvez modifier la application Secret_Tokok of Your Rails. Cela invalidera toutes les sessions existantes. P> puis copiez la valeur dans p> thats. N'oubliez pas de redémarrer votre application après cela;) p>
Je devais copier la valeur à secrète_token.rb
Si vous exécutez ceci sur un serveur de production, je vous recommande:
production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>