¿Cómo se obtienen y configuran las cookies en Zope y Plone?
Pregunta
Documentación, y lo más importante, algunos ejemplos de código serían muy útiles. Preferiría que esto no esté en scripts protegidos, sino en el código que se incluye en los paquetes modernos.
Solución
Utilice el método response.setCookie ()
. Puede alcanzar el objeto de respuesta a través del objeto de solicitud. Puede acceder a este último mediante adquisición ( self.REQUEST
), o en vistas accediendo al objeto de solicitud pasado, generalmente a través de self.request
:
self.request.response.setCookie(name, value, **options)
donde las opciones
terminan como parámetros adicionales de cookies. Por lo tanto, convertir una cookie en una cookie que no sea de sesión requiere una palabra clave expires = 'date'
, limitar la cookie a una ruta es una palabra clave path = '/ somepath'
para el método setCookie ()
. Las reglas habituales de cookies del navegador se aplican aquí.
Para caducar una cookie ya establecida en el navegador, puede usar una palabra clave expires = 'date in the past'
, o puede usar la response.expireCookie () método, que hace esto por usted:
self.request.response.expireCookie(name, **options)
En este caso, aún puede incluir opciones como la ruta
u otras marcas de cookies, pero el método anulará las opciones max_age
y expires
para garantizar que el navegador elimine la cookie.
Aunque podría utilizar el soporte SESSION
de Zope, realmente necesita pensar en los problemas de escalabilidad. Por ejemplo, debe pensar cómo se compartirán los datos de la sesión en un clúster si usa ZEO o RelStorage. En general, es preferible evitar el uso de SESSION
si la escalabilidad va a ser un problema.
Otros consejos
Para configurar las cookies, utilice RESPONSE.setCookie.
>>> self.REQUEST.RESPONSE.setCookie('cookiename', 'cookievalue', expires='Wed, 22 June 2009 12:00:00 GMT')
La cookie terminará en la SOLICITUD en la próxima solicitud.
>>> self.REQUEST['cookiename']
'cookievalue'
Usted " elimina " la cookie utilizando None
como valor.
** Tenga en cuenta, sin embargo, que la mayoría de las veces cuando las personas usan cookies es para almacenar variables que tienen que ver con las sesiones, y puede usar self.REQUEST.SESSION para eso, es más fácil.