Pregunta

Estoy haciendo una pequeña aplicación web en la orilla del Mar.Tengo un componente login, y después de que el usuario inicia sesión en quiero enviar una cookie cuando el componente siguiente se representan a sí mismos.Es allí una manera de conseguir en el objeto de control de la respuesta para que yo pueda añadir algo a las cabeceras que es la salida?

Estoy tratando de evitar el uso de WASession>>redirectWithCookies ya que parece bastante kludgey para redirigir sólo porque quiero establecer una cookie.

Hay otra manera que ya existen para agregar una cookie que saldrá en la próxima respuesta?

¿Fue útil?

Solución

Actualmente no hay manera integrada para agregar cookies durante la acción de devolución de llamada fase de procesamiento de la solicitud.Esto es más probable que un defecto, y es de notar en este tema: http://code.google.com/p/seaside/issues/detail?id=48

Actualmente, esto está programado para ser fijado para la Playa 2.9, pero no sé si será portado a 2.8 o no.

Tenga en cuenta que ya existe (por defecto) una redirección entre la acción y la representación de las fases para evitar que una Actualización a partir de la re-activación de las devoluciones de llamada, por lo que en el gran esquema de las cosas, uno más de redireccionamiento en este caso no es así malo.

Si usted todavía desea profundizar más, echar un vistazo a WARenderContinuation>>handleRequest:.Que es donde de procesamiento de devolución de llamada se activa y la redirección o fase de representación comenzado.

Editado para añadir:

El problema ya se ha solucionado y (en el más reciente desarrollo de código) usted puede ahora agregar cookies en la respuesta actual en cualquier momento.Basta con acceder al objeto de respuesta en el actual contexto de la solicitud y agregar la cookie.Por ejemplo, usted podría hacer algo como:

self requestContext response addCookie: aCookie

Esto es raro para ser adaptado a Seaside 2.8 como se requiere bastante importante cambio en la manera en que las respuestas son manipulados.

Otros consejos

He mirado en esto en profundidad, y la respuesta parece ser no.Específicamente, no hay manera de llegar a la respuesta de la WARenderCanvas o cualquier cosa que se puede acceder (se aferra a la WARenderingContext, que se aferra a la WAHtmlStreamDocument, que se aferra a la respuesta del stream pero no es la respuesta en sí misma).Creo que sería razonable dar el contexto de acceso a la respuesta actual, precisamente en ser capaz de establecer los encabezados, pero le preguntó si ya había una manera, así:no.

Dicho esto, Playa hace un montón de extra redirigir, y no parece tener mucho impacto en la experiencia del usuario, así que tal vez la cosa a hacer es dejar de preocuparse aparente kludgey e ir con el flujo de la API que ya existe :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top