如何从django_session表的session_data中找到用户ID?

发布于 2021-01-29 15:14:04

django_sessionsession_data中存储的表首先使用python的pickle模块进行腌制,然后使用python的base64模块在base64中进行编码。

我得到了解码腌制的session_data。

django_session表中的session_data:

gAJ9cQEoVQ9fc2Vzc2lvbl9leHBpcnlxAksAVRJfYXV0aF91c2VyX2JhY2tlbmRxA1UpZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmRxBFUNX2F1dGhfdXNlcl9pZHEFigECdS5iZmUwOWExOWI0YTZkN2M0NDc2MWVjZjQ5ZDU0YjNhZA==

通过base64.decode(session_data)对其进行解码后:

 \x80\x02}q\x01(U\x0f_session_expiryq\x02K\x00U\x12_auth_user_backendq\x03U)django.contrib.auth.backends.ModelBackendq\x04U\r_auth_user_idq\x05\x8a\x01\x02u.bfe09a19b4a6d7c44761ecf49d54b3ad

我想找出auth_user_idfrom的价值auth_user_idq\x05\x8a\x01\x02u 。请帮我这样做。

关注者
0
被浏览
32
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我在Paulo的方法上遇到了麻烦(请参阅我对他的回答的评论),所以我最终从scottbarnham.com博客文章中使用了这种方法:

    from django.contrib.sessions.models import Session
    from django.contrib.auth.models import User
    
    session_key = '8cae76c505f15432b48c8292a7dd0e54'
    
    session = Session.objects.get(session_key=session_key)
    uid = session.get_decoded().get('_auth_user_id')
    user = User.objects.get(pk=uid)
    
    print user.username, user.get_full_name(), user.email
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看