11
votes

Sinatra ne persiste pas la session avec redirection sur chrome

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: xxx

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?

Merci d'avance!


6 commentaires

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


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'] ?


4 Réponses :


0
votes

S'il vous plaît essayer de désactiver 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 réseau . Devrait voir 'cookie:' champ.


0 commentaires

2
votes

Ajoutez ceci à votre fichier d'application principal: Utiliser rack :: session :: cookie,: clé => 'rack.session', : chemin => '/', : secret => 'Certains-string-string'

Avec cela ajouté, vous devriez pouvoir attribuer une session ['quoi que ce soit »et que cela fonctionne comme prévu.


1 commentaires

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?



0
votes

Je pense que simplement parce que vous n'avez pas défini : session_secret , reportez-vous à ma réponse sur ici < / a>


0 commentaires

1
votes

En faisant Activer: Sessions 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.

Ainsi, longue histoire courte:

SET: SESSION_SECRET, "SÉVERTUREANDOM.NEW (10) TENU GÉNÉRÉ" Activer: Sessions

Toujours utiliser Activer: Sessions avec un secret, sinon votre session est recréée à chaque étagère voit une demande.


0 commentaires