Frage

Ich mache eine kleine Web-Anwendung in Seaside. Ich habe eine Login-Komponente, und nachdem sich der Benutzer anmeldet Ich möchte an einem Cookie senden, wenn die nächste Komponente selbst macht. Gibt es eine Möglichkeit im Objekt Umgang mit der Antwort zu bekommen, damit ich etwas zu den Header hinzufügen kann, wird es ausgegeben?

Ich versuche, mit WASession >> redirectWithCookies zu vermeiden, da es ziemlich kludgey scheint nur zu umleiten, weil ich ein Cookie gesetzt werden soll.

Gibt es eine andere Art und Weise, die bereits existiert, ein Cookie fügen, die auf der nächsten Antwort gehen werden?

War es hilfreich?

Lösung

Es gibt derzeit keine integrierte Möglichkeit, Cookies während der Aktion / Callback-Phase der Anforderungsverarbeitung hinzuzufügen. Dies ist wahrscheinlich ein Defekt und ist in dieser Frage festgestellt: http: / /code.google.com/p/seaside/issues/detail?id=48

Dies ist derzeit geplant für Seaside fixiert werden 2,9, aber ich weiß nicht, ob es sogar auf 2,8 zurückportiert wird oder nicht.

Beachten Sie, dass es bereits ist (standardmäßig) eine Umleitung zwischen der Aktion und Rendering-Phasen, die eine Aktualisierung der Rückrufen Nachtriggern zu verhindern, so dass in dem großen Plan der Dinge, noch eine Umleitung ist in diesem Fall nicht so schlecht.

Wenn Sie noch weiter graben wollen, müssen Sie einen Blick auf WARenderContinuation >> :. handle Das ist, wo Callback-Verarbeitung ausgelöst wird und die Umleitung oder Rendering-Phase begonnen.

Edited hinzufügen:

Das Problem wurde nun behoben und (in dem aktuellen Entwicklungscode) Sie können nun richtig Cookies auf die aktuelle Antwort jederzeit hinzufügen. Zugriff einfach das Antwortobjekts in dem aktuellen Anforderungskontext und das Cookie hinzufügen. Zum Beispiel könnten tun Sie so etwas wie:

self requestContext response addCookie: aCookie

Dies ist unwahrscheinlich, zurückportiert werden 2,8 bis Seaside, da es eine ziemlich große Veränderung in der Art und Weise Antworten behandelt erforderlich sind.

Andere Tipps

Ich habe gerade in diese Tiefe sieht, und die Antwort scheint nicht zu sein. Insbesondere gibt es keine Möglichkeit, auf die Antwort von den WARenderCanvas oder etwas zu bekommen darauf zugreifen können (es hält sich an die WARenderingContext, die auf die WAHtmlStreamDocument hält, die auf die Strom Antwort hält , aber nicht die Antwort selbst) . Ich denke, es wäre sinnvoll, den Kontext Zugriff auf die aktuelle Antwort zu geben, genau zu können Header auf sich setzen, aber Sie gefragt, ob es bereits eine Art und Weise war, so: no.

Wie gesagt, Meer hat eine Menge extra Umleiten, und es scheint nicht viel Einfluss auf die Benutzererfahrung zu haben, so vielleicht die Sache ist zu tun, um es zu stoppen besorgniserregend scheinbaren kludgey und mit dem Strom von der API, die bereits vorhanden ist:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top