【问题标题】:How can I get the session of 'username' in Django如何在 Django 中获取“用户名”的会话
【发布时间】:2014-07-02 16:30:37
【问题描述】:

我正在使用中间件来获取某个用户的会话,为此,我在 Ajax 请求的标头中获取该用户的用户名和 csrfToken。

是否可以仅使用该数据手动获取特定用户的会话? (虽然会话在请求期间关闭,或由其他问题提出)

如果是这样,请给我一些例子吗?

PS:

我想要访问它的会话的用户使用以下代码生成了它的 CSRF:

from django.middleware.csrf import _get_new_csrf_key as get_new_csrf_key

new_key = get_new_csrf_key()

return HttpResponse(
    simplejson.dumps({'token': new_key}), 
    mimetype='application/json'
)

【问题讨论】:

    标签: django session django-csrf django-sessions csrf-protection


    【解决方案1】:

    您需要手动创建用户会话,才能再次获取此会话。

    正如您在此处看到的: https://docs.djangoproject.com/en/dev/topics/http/sessions/

    from django.contrib.sessions.backends.db import SessionStore
    s = SessionStore()
    # stored as seconds since epoch since datetimes are not serializable in JSON.
    s['last_login'] = 1376587691
    s.save()
    s.session_key
    #'2b1189a188b44ad18c35e113ac6ceead'
    
    s = SessionStore(session_key='2b1189a188b44ad18c35e113ac6ceead')
    s['last_login']
    #1376587691
    

    如果你知道 session_key,你可以再次拥有它。

    【讨论】:

    • 我测试了一个注意到 session_key 随每个请求而变化,所以我认为我不能使用你所说的。无论如何,这对我取得一些进步帮助很大。我必须测试它,但也许我找到了办法。
    猜你喜欢
    • 2016-06-25
    • 2012-01-31
    • 2015-01-22
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    相关资源
    最近更新 更多