SINATRA ne persiste pas ma session avec une redirection sur chrome. Il crée une session entièrement nouvelle et je perds toutes mes données de session précédentes.
Par exemple (semblable à Sinatra Docs ), je fais quelque chose comme ceci: p> Je pense que cela a quelque chose à voir avec la façon dont les différents navigateurs répondent à la manutention de la session après une réponse de redirection. Quelqu'un a-t-il vu quelque chose de similaire à cela, ou avoir des idées sur la manière de résoudre ce problème tout en utilisant toujours des sessions? P> Merci d'avance! P> P>
4 Réponses :
S'il vous plaît essayer de désactiver em> toutes les extensions de gérance de la cookie personnalisées est chrome le cas échéant. Après ces en-têtes de vérification dans Outils de développeurs forts> → réseau fort>. Devrait voir 'cookie:' champ. P>
Ajoutez ceci à votre fichier d'application principal: Utiliser rack :: session :: cookie,: clé => 'rack.session', : chemin => '/', : secret => 'Certains-string-string' p>
Avec cela ajouté, vous devriez pouvoir attribuer une session ['quoi que ce soit »et que cela fonctionne comme prévu. P>
Quelqu'un peut-il expliquer pourquoi cela devrait résoudre le problème? Lecture de la documentation Sinatra Il est indiqué que cela peut être utilisé pour ajouter des paramètres supplémentaires pour les sessions, mais je ne suis pas sûr de ce que cela active: les sessions ne font pas?
Je pense que simplement parce que vous n'avez pas défini : session_secret code>, reportez-vous à ma réponse sur ici < / a> p>
En faisant Ainsi, longue histoire courte: p>
Toujours utiliser Activer: Sessions Code> Vous obtenez juste accès à la session par demande.
Sinatra n'a aucun moyen de conserver la référence à l'appel précédent (votre redirection) car elle est traitée comme une autre demande. P>
SET: SESSION_SECRET, "SÉVERTUREANDOM.NEW (10) TENU GÉNÉRÉ"
Activer: Sessions
code> p>
Activer: Sessions CODE> avec un secret, sinon votre session est recréée à chaque étagère voit une demande. P>
La manipulation de session par défaut à Sinatra se fait avec des cookies. Je suppose donc que cela a quelque chose à voir avec la manière dont Chrome gère (ou refuse de gérer) les demandes de cookie sur les redirections. Je ne sais pas comment vous pouvez gérer cela, mais un moyen simple de tout le problème serait d'utiliser des sessions à base de DB ou des sessions de mémoire avec Redis ou quelque chose de similaire.
Quel est votre environnement? Je viens de résoudre une question impliquant un stockage de session disparaissant qui pourrait être d'intérêt, mais cela dépend de l'endroit où / comment cela vous arrive.
J'avais le même problème, en utilisant la mise en scène comme environnement.
Version chromée? Je ne peux pas reproduire en
20.0.1132.57 code>
Chrome fait à coup sûr la norme de mise en place de cookies, même sur une redirection. Je regarderais d'autre chose pour une cause.
Que trouvez-vous dans
env ['rack.session'] code>?