【问题标题】:Django Python how to take data from another sessionid cookie?Django Python 如何从另一个 sessionid cookie 中获取数据?
【发布时间】:2021-03-16 01:37:15
【问题描述】:

所以我正在使用 django python,并且在每个新浏览器上,我都会为我的 cookie 获得一个新的 sessionid,每个 sessionid 本身都有一个唯一的会话数据库。如果可能的话,我正在寻找一种从其他 sessionid 中获取数据的方法。

示例: 我在我的网站上,在 2 个不同的浏览器中。

每个浏览器都有一个唯一的 sessionid cookie,因此是一个唯一的会话数据库。

(cookie 示例(不真实或无效)):

Chrome:a7363dc Firefox:a3621bcz

在 chrome 中,我得到 request.session["foo"] Set too "bar"

在 Firebox 中,我将 request.session["foo"] 设置得太“动物园”

有没有一种方法可以让我喜欢 var = request.session[a3621bcz]['foo'] 所以它在 Firefox 中获取会话“foo”的值? (假设我在 chrome 中执行此操作)

或者,有什么方法可以让每个人的每个 sessionid cookie 始终相同?让每个人都拥有对 request.session["elm"] 元素的相同访问权限?

例如:无论我在 chrome、firefox 还是我的 chromebook 上的星巴克,当我搜索 request.session['foo'] 时,无论我从哪一个登录,它都会返回“bar”?

【问题讨论】:

    标签: python django session


    【解决方案1】:

    您可以通过以下方式访问给定会话 ID 的会话:

    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 使用会话中间件使访问相关会话更加方便,从而防止两个会话之间“泄漏”会话变量。

    【讨论】:

    • 澄清一下,假设我在我的 chrome 浏览器中使用 sessionid: a7363dc ,如果我执行上面的代码 (session = sessionstore('a3621bcz')) 那么如果我执行 var1 = session[ “foo”],它将为我的 Firefox sessionid 提供会话 foo 的值? ('a3621bcz')
    • @jasonmzx:是的。
    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    相关资源
    最近更新 更多