Accès au nom du cookie "clé de session" depuis n'importe où dans Rails
Nous construisons un plugin pour les Rails pour être utilisé à l'intérieur de l'iframe Facebook applications, et à un moment, nous avons besoin de vérifier si le Rail du cookie de session a été définie ou pas.
Par défaut, ce cookie est nommé _myprojectname_sessionce que nous avons besoin de le savoir est le nom du cookie. Donc, si ce n'est pas ensemble, nous pouvons faire des redirections assurez-vous que les cookies sont définis.
Comment accéder à ce foutu nom du cookie à partir de n'importe où? Ou au moins à partir d'un contrôleur?
source d'informationauteur jimeh | 2009-06-16
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution. Dans les Rails 2.3.2 au moins la clé de session dans un ensemble dans
config/initializers/session_store.rb
comme ceci:Et vous pouvez lire la valeur comme ceci:
De
Base.session
àBase.session_options
automatiquement, ne pas faire beaucoup de sens, et il m'a causé un grand mal de tête... lolPour accéder au nom du cookie de session à partir de l'intérieur de la vue ou de la commande, vous pouvez dire:
et puis pour accéder à la valeur brute de ce cookie, un tableau vide si elle n'est pas définie, vous utilisez:
Le nom de cookie ( aka session_key ) est définie dans votre
config/environment.rb
fichier.Dans mon expérience, si il y a un trait de soulignement à la clé, c'est à dire, PARFOIS, ne définit pas les cookies. En d'autres termes, l'utilisation de 'projectsession' au lieu de '_project_session'.
Je pense que la clé de session est stocké dans une variable appelée ENV_SESSION_KEY
Remarque aussi ce bug qui affecte des tests autour session_options dans certaines versions de Rails 2.x: https://rails.lighthouseapp.com/projects/8994/tickets/2303-testrequest-doesnt-initialize-session_options
Dans les Rails 3/4 je suis en utilisant ceci:
C'est une table de hachage qui contient tous les cookies de l'utilisateur courant, y compris celui de la session.
La valeur de hachage a comme clé le nom du cookie et la valeur que la valeur du cookie
Je ne pouvais pas travailler sur la façon de le faire dans rails 3 🙁
Finalement, j'ai fini par mettre cette config/initializers/session_store.rb
puis en accédant à ce cas de besoin, par exemple en vue...