我正在使用Web服務後端爲Django提供身份驗證,並且get_user方法必須保留由Web服務提供的cookie以便與會話關聯。現在,我只需撥打urllib2.urlopen(myTargetService)
即可撥打遠程電話,但這並不會傳遞當前會話的Cookie。如何在Django中創建會話本地的Cookie感知HTTP客戶端?
我創建了一個會話訪問中間件存儲在設置會話:
class SessionAccessMiddleware:
def process_request(self, request):
settings.current_session = request.session
所以,我可以在get_request和post_request訪問請求會話,但我不知道如何有記憶的urllib2我的cookies以會話特定的方式。
我該怎麼做?
實際上,我寫了一個使用這些的自定義auth後端,所以我們對此很滿意。 django-globals似乎沒有增加太多的黨;我會考慮它,如果設置給我麻煩。 我不完全理解的是開瓶器;我可以保留那些人多久?例如,我可以創建一個並在會話中存儲_that_嗎? – 2010-07-29 03:25:40
我剛剛檢查 - 看來你不能,對不起。 opener和cookiejar對象不可pickleable('UnpickleableError:不能pickle對象'),所以它們不能存儲在會話中。但是,我可以醃製Cookie,因爲每次創建開罐器時都可以將其存儲並添加到CookieJar(使用'set_cookie')。 –
cji
2010-07-29 05:37:14