pyramid_subscribers_cookiexfer adalah modul Python yang memungkinkan Anda untuk mentransfer cookie dari permintaan untuk respon pada pengecualian http. Anda mungkin perlu ini sebagai pengalihan adalah subclass dari httpexceptions.
Ikhtisar
Aliran pengguna biasa mungkin ini:
* Pengguna menyerahkan formulir ke / akun / Login
* Mengotentikasi backend, menetapkan berbagai cookie
* Backend diarahkan ke / akun / home
Jika Anda hanya bertahan data melalui sesi piramida ini tidak diperlukan - cookie sesi piramida diatur sebelum otentikasi, sehingga data tetap melalui redirect.
Ini berguna jika Anda sedang menyiapkan informasi tambahan melalui cookies browser, seperti caching data pengguna pada klien.
Hampir setiap browser menghormati header setcookie di redirect - hanya Safari dikenal untuk mengabaikan ini & nbsp;. Banyak pengembang telah disimpan cookie di data sesi untuk menunjukkan di masa depan dilihat, paket ini secara otomatis itu.
Dua metode yang tersedia untuk bertahan informasi
- Add_headers - transfer header cookie dari permintaan untuk respon
- Session_save - menyimpan cookie Anda ingin mengatur ke sesi, bermigrasi ke dalam respon pada tampilan halaman berikutnya
Selain itu paket ini menawarkan kemampuan untuk 'unik' mengelola cookie untuk menghindari duplikasi. & Nbsp; sekarang perilaku ini dianjurkan.
Paket dikonfigurasi melalui beberapa variabel ditetapkan dalam file .ini Anda, kemudian diaktifkan dengan impor dan panggilan untuk 'initialize dalam .ini Anda
Mekanisme internal yang cukup sederhana:
& 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;
Dalam rangka untuk membantu dalam debugging dan mengurangi pengolahan:
- Initialize_subscribers () hanya akan menginstal pendengar NewResponse jika sessioning akan digunakan
- Regex dikonfigurasi digunakan untuk menghilangkan jalur dari modul (termasuk laporan debug)
Catatan Penting:
- Paket ini akan menghormati header yang dibesarkan dengan HttpException yang
- Karena bagaimana piramida internal bekerja, Anda harus 'kembali' redirect - tidak 'kenaikan' itu - jika Anda ingin cookie ditransfer dari request.response & nbsp.; Jika Anda meningkatkan 'redirect, hanya header yang digunakan untuk menginisialisasi redirect dapat disimpan dalam sesi (mereka ada di objek respon baru dan tidak perlu ditransfer)
Situasi ini akan bekerja:
Sebuah contoh kasus beberapa
& Nbsp; & nbsp; & nbsp; kembali HTTPFound (lokasi = '/ baru / lokasi')
& Nbsp; & nbsp; & nbsp; - Cookie yang ditetapkan oleh request.response.set_cookie akan ditransfer
& Nbsp; & nbsp; & nbsp;
& Nbsp; & nbsp; & nbsp; kembali HTTPFound (lokasi = '/ baru / lokasi', header = dict_of_headers)
& Nbsp; & nbsp; & nbsp; - Header di dict_of_headers sudah dalam respon baru, dan dapat bertahan untuk sesi
& Nbsp; & nbsp; & nbsp; - Cookie yang ditetapkan oleh request.response.set_cookie akan ditransfer
& Nbsp; & nbsp; & nbsp;
& Nbsp; & nbsp; & nbsp; meningkatkan HTTPFound (lokasi = '/ baru / lokasi')
& Nbsp; & nbsp; & nbsp; - NO cookie yang ditetapkan oleh request.response.set_cookie akan ditransfer
& Nbsp; & nbsp; & nbsp; meningkatkan HTTPFound (lokasi = '/ baru / lokasi', header = dict_of_headers)
& Nbsp; & nbsp; & nbsp; - Header di dict_of_headers sudah dalam respon baru, dan dapat bertahan untuk sesi
& Nbsp; & nbsp; & nbsp; - NO cookie yang ditetapkan oleh request.response.set_cookie akan ditransfer
Pengaturan
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 | cacad | _debug_toolbar)"
& Nbsp; & nbsp; & nbsp;
app / __ init__.py
& Nbsp; & nbsp; & nbsp; impor pyramid_subscribers_cookiexfer
& Nbsp; & nbsp; & nbsp;
& Nbsp; & nbsp; & nbsp; def main (global_config, ** pengaturan):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ...
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; pyramid_subscribers_cookiexfer.initialize (config, pengaturan)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ...
Persyaratan :
- Python
- piramida
Komentar tidak ditemukan