Dokumentacja, a co ważniejsze, niektóre przykłady kodu byłyby bardzo przydatne. Wolałbym, żeby to nie było w chronionych skryptach, ale w kodzie, który trafia do nowoczesnych pakietów.Jak uzyskać i ustawić pliki cookie w Zope i Plone?
Odpowiedz
Użyj metody response.setCookie()
. Możesz dotrzeć do obiektu odpowiedzi za pośrednictwem obiektu żądania. Te ostatnie można osiągnąć poprzez przejęcia (self.REQUEST
) lub przez dostęp do poglądów przeszedł w obiekt żądania, zazwyczaj poprzez self.request
:
self.request.response.setCookie(name, value, **options)
gdzie options
skończyć jako dodatkowe parametry ciasteczka. W związku z tym przekształcenie pliku cookie w plik cookie poza sesją wymaga słowa kluczowego expires='date'
, ograniczenie pliku cookie do ścieżki to słowo kluczowe path='/somepath'
do metody setCookie()
. Obowiązują tu zwykłe reguły dotyczące plików cookie w przeglądarce.
wygaśnie cookie już ustawiony w przeglądarce, można też użyć expires='date in the past'
słowo kluczowe, lub można użyć metody response.expireCookie()
, który robi to za ciebie:
self.request.response.expireCookie(name, **options)
W tym przypadku można nadal obejmować opcje takie jak path
lub inne znaczniki plików cookie, ale metoda zastąpi opcje max_age
i expires
, aby upewnić się, że plik cookie został usunięty przez przeglądarkę.
Mimo że możesz korzystać z pomocy Zope'a SESSION
, naprawdę musisz przemyśleć kwestie związane ze skalowalnością. Na przykład musisz przemyśleć, jak dane sesji będą współdzielone w klastrze, jeśli korzystasz z ZEO lub RelStorage. Zasadniczo lepiej jest unikać korzystania z SESSION
, jeśli skalowalność będzie stanowić problem.
Aby ustawić pliki cookie, użyj RESPONSE.setCookie.
>>> self.REQUEST.RESPONSE.setCookie('cookiename', 'cookievalue', expires='Wed, 22 June 2009 12:00:00 GMT')
Plik cookie trafi do ŻĄDANIA w następnym żądaniu.
>>> self.REQUEST['cookiename']
'cookievalue'
Użytkownik "usuwa" plik cookie, używając wartości None
.
** Pamiętaj jednak, że większość czasu, w którym ludzie używają plików cookie, służy do przechowywania zmiennych, które mają związek z sesjami, i możesz użyć self.REQUEST.SESSION do tego, jest to łatwiejsze.
Dzięki za odpowiedź! Pracujemy z 3-4 instancjami na aplikację zope, więc * nie * martwienie się o to, którą instancję uderzamy, jest bardzo miłe. – pydanny