pyramid_subscribers_cookiexfer är en Python-modul som gör att du kan föra över cookies från begäran till svar på en http undantag. Du kan behöva detta som omdirigeringar subklasser httpexceptions.
Översikt
En typisk användare flöde kan vara här:
* Användaren lämnar blanketten till / konto / inloggning
* Backend autentiserar ställer olika cookies
* Backend omdirigeringar till / konto / home
Om du bara kvarstår data genom pyramidsessioner detta inte behövs - pyramiden session cookie sätts före autentisering, så uppgifter kvarstår genom omdirigering.
Detta är användbart om du ställer ordnad information genom cookies i webbläsaren, t.ex. caching användardata på klienten.
Nästan alla webbläsare respekterar en SetCookie sidhuvud på en omdirigering - endast Safari är känd för att ignorera detta. & Nbsp; Många utvecklare har sparat cookies i sessionsdata som visar på framtida besök, det här paketet automatiserar det.
Det finns två metoder att kvarstå uppgifter
- add_headers - överföringar cookie-headers från begäran till svar
- Session_save - sparar cookies du skulle vill ställa in i sessionen, migrerar dem i svaret på nästa sidvisning
Dessutom paketet erbjuder möjligheten att "unikt" hantera cookies för att undvika dubbletter. & Nbsp; just nu detta beteende rekommenderas.
Paketet konfigureras genom några variabler som i dina .ini-filer, därefter aktiveras med en import och kallar till "initiera" i dina .ini
De interna mekanik är ganska enkel:
& Nbsp; & nbsp; & nbsp; config.add_subscriber (
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; new_request,
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Pyramid.events.NewRequest')
& Nbsp; & nbsp; & nbsp; config.add_subscriber (
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; new_response,
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Pyramid.events.NewResponse')
& Nbsp; & nbsp; & nbsp;
För att underlätta felsökning och skära ned på bearbetning:
- Initialize_subscribers () kommer endast installera en NewResponse lyssnare om sessioning kommer att användas
- En konfigurerbar regex används för att eliminera banor från modulen (inklusive felsöknings uttalanden)
Viktigt:
- Detta paket kommer att respektera rubriker som föds upp med httpexception
- På grund av hur pyramid s interna arbete, du måste "återvändande" omdirigeringen - inte "raise" det - om du vill att cookies överförs från request.response. & Nbsp; Om du höjer "en omdirigering, kan endast de rubriker som används för att initiera omdirigering lagras i sessionen (de finns i det nya svarsobjektet och behöver inte överföras)
Dessa situationer kommer att fungera:
Några fall exempel
& Nbsp; & nbsp; & nbsp; tillbaka HTTPFound (plats = '/ nya / plats')
& Nbsp; & nbsp; & nbsp; - Eventuella cookies från request.response.set_cookie kommer att överföras
& Nbsp; & nbsp; & nbsp;
& Nbsp; & nbsp; & nbsp; tillbaka HTTPFound (plats = '/ nya / plats', headers = dict_of_headers)
& Nbsp; & nbsp; & nbsp; - Rubrikerna i dict_of_headers är redan i det nya svaret, och kan kvarstå till sessionen
& Nbsp; & nbsp; & nbsp; - Eventuella cookies från request.response.set_cookie kommer att överföras
& Nbsp; & nbsp; & nbsp;
& Nbsp; & nbsp; & nbsp; höja HTTPFound (plats = '/ nya / plats')
& Nbsp; & nbsp; & nbsp; - INGA cookies från request.response.set_cookie kommer att överföras
& Nbsp; & nbsp; & nbsp; höja HTTPFound (plats = '/ nya / plats', headers = dict_of_headers)
& Nbsp; & nbsp; & nbsp; - Rubrikerna i dict_of_headers är redan i det nya svaret, och kan kvarstå till sessionen
& Nbsp; & nbsp; & nbsp; - INGA cookies från request.response.set_cookie kommer att överföras
Inställningar
environment.ini
& Nbsp; & nbsp; & nbsp; cookie_xfer.redirect_add_headers = True
& Nbsp; & nbsp; & nbsp; cookie_xfer.redirect_add_headers__unique = True
& Nbsp; & nbsp; & nbsp; cookie_xfer.redirect_session_save = False
& Nbsp; & nbsp; & nbsp; cookie_xfer.redirect_session_save__unique = False
& Nbsp; & nbsp; & nbsp; cookie_xfer.re_excludes = "^ / (css | img | js | deformeras | _debug_toolbar)"
& Nbsp; & nbsp; & nbsp;
app / __ init__.py
& Nbsp; & nbsp; & nbsp; import pyramid_subscribers_cookiexfer
& Nbsp; & nbsp; & nbsp;
& Nbsp; & nbsp; & nbsp; def huvud (global_config, ** inställningar):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ...
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; pyramid_subscribers_cookiexfer.initialize (config, inställningar)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ...
Krav :
- Python
- pyramid
Kommentarer hittades inte