Django Python как взять данные из другого файла cookie с идентификатором сеанса?

#python #django #session

#python #django #сессия

Вопрос:

Итак, я работаю с django python, и в каждом новом браузере я получаю новый идентификатор сеанса для своего файла cookie, каждый идентификатор сеанса получает уникальную базу данных сеансов. Я ищу способ получить данные из других идентификаторов сеанса, если это возможно.

Пример: я на своем сайте в 2 разных браузерах.

Каждый браузер получил уникальный файл cookie sessionid, следовательно, уникальную базу данных сеанса.

(примеры файлов cookie (не настоящие или действительные)):

Chrome: a7363dc Firefox: a3621bcz

В Chrome я получил запрос.session [«foo»] Установил слишком «bar»

В Firebox я получил request.session [«foo»] слишком «зоопарк»

Есть ли способ, которым я могу использовать var = request.session[a3621bcz][‘foo’], чтобы он принимал значение сеанса «foo» в firefox? (допустим, я выполняю это в Chrome)

Или, в качестве альтернативы, есть ли какой-либо способ сделать каждый файл cookie с идентификатором сеанса одинаковым для всех? чтобы у всех был одинаковый доступ к элементам request.session[«elm»]?

Например, будь то в Chrome, Firefox или даже в starbucks на моем chromebook, когда я ищу запрос.session [‘foo’] возвращает «bar» независимо от того, с какого из них я вошел в систему?

Ответ №1:

Вы можете получить доступ к сеансам с заданным идентификатором сеанса с помощью:

 from django.conf import settings
from importlib import import_module

engine = import_module(settings.SESSION_ENGINE)
sessionstore = engine.SessionStore

session = sessionstore(session_key) 

с session_key помощью ключа сеанса (так здесь 'a3621bcz' ). Таким образом, вы можете получить к нему доступ с session['foo'] помощью . При этом, вероятно, лучше не смешивать сеансы. Django использует промежуточное программное обеспечение сеанса, чтобы сделать доступ к соответствующему сеансу более удобным и, таким образом, предотвратить «утечку» переменных сеансов между двумя сеансами.

Комментарии:

1. Просто для пояснения, допустим, я нахожусь в своем браузере Chrome с идентификатором сеанса: a7363dc, если я выполняю приведенный выше код (session = sessionstore(‘a3621bcz’)) Тогда, если я сделаю var1 = session[«foo»] , это даст мне значение foo сеанса для моего firefox sessionid? (‘a3621bcz’)

2. @jasonmzx: да.