Cookie i sesje: Status między HTTP- żądaniami
LCC1ZCCquery są od siebie niezależne — mechanizmy cookie i sesji pozwalają na powiązanie stanu między nimi.
HTTP- żądania są niezależne od siebie: sam protokół nie wiąże pojedynczego żądania
z następującymi. Ale aplikacja w sekcji 22.29 już musi przechowywać coś pomiędzy żądaniami —
Na przykład komunikat o błędzie, który powinien pojawić się na następnej stronie
flash(...). W tym celu organizowane są cookie i sesje
mechanizmy.
Cookie jest niewielką wartością, którą przeglądarka przechowuje
Cookie to mały fragment danych, o który serwer prosi przeglądarkę zapisuje, a przeglądarka następnie stosuje je do kolejnych żądań do tej samej strony. Dokładnie Serwer może powiązać wiele żądań ze sobą jako pochodzące z tego samego przeglądarka.
Sesja — mechanizm przechowywania stanu między zapytaniami
Sesja (session) to mechanizm na poziomie aplikacji, który wykorzystuje
cookie łączyć wiele żądań ze sobą i przechowywać część
danych. Implementacje są różne: dane sesji mogą być przechowywane na serwerze (w bazie danych
lub osobnej pamięci masowej, i tylko identyfikator może być przekazany do cookie), albo możesz zrobić to bezpośrednio do
cookie po stronie przeglądarki. Flask domyślnie wybiera drugą opcję i
zapewnia gotowy obiekt session, który zachowuje się jak
słownik:
from flask import session
session["poslednij_vizit"] = "22-30"
# przy następnym żądaniu tej samej przeglądarki:
session.get("poslednij_vizit") # "22-30"
Funkcja flash(...)użyte w sekcji 22.29
Na tym samym session: mechanizmie wiadomość jest przechowywana w sesji dla kolejnego żądania
i jest automatycznie usuwany po przeczytaniu
get_flashed_messages() w szablonie.
SECRET_KEY. Podpis gwarantuje autentyczność: Jeśli ktoś zmieni treść cookie, podpis przestanie się zgadzać i Flask odrzuci sesję. Ale podpis — nie szyfrowanie: Domyślnie zawartość sesji można odczytać bez znajomości tajnego klucza — po prostu nie można go niewykrywalnie zmienić. Nigdy nie umieszczaj haseł ani innych danych w sesji, które powinny pozostać nieczytelne dla użytkownika, którego przeglądarka je przechowuje.Szkic tego rozdziału celowo się kończy tutaj: pełne logowanie użytkownika (uwierzytelnienie) dodałoby do rozdziału tom osobnego kursu. Gdzie temat się toczy dalej — Więcej informacji można znaleźć w sekcji 22.36.