2014-05-14 83 views
1

我正在中間件中獲取某個用戶的會話,爲此,我在Ajax請求頭中獲取該用戶的用戶名和csrfToken。我怎樣才能在Django中獲得'用戶名'的會話

如果可以使用該數據手動獲取特定用戶的會話嗎? (雖然會議在請求期間關閉,或由其他問題提出)

如果是這樣,請您舉例說明一下嗎?

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' 
) 

回答

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可以,你可以再次擁有它。

+0

我測試了一個注意到session_key隨每個請求而改變,所以我不認爲我可以使用你說的。無論如何,它幫助我取得了一些進展。我必須測試它,但也許我找到了一種方法。 – Sascuash