2008-09-17 54 views
5

我正在Seaside製作一個小型web應用程序。我有一個登錄組件,在用戶登錄後,我想在下一個組件呈現自己時發送一個cookie。有沒有辦法讓對象處理響應,所以我可以添加一些東西到它將輸出的頭文件中?如何在不重定向的情況下向海邊回覆添加Cookie?

我試圖避免使用WASession >> redirectWithCookies,因爲它似乎很重要,因爲我想設置一個cookie重定向。

有沒有另外一種方法可以添加一個會在下一個響應中出現的cookie?

回答

5

目前在請求處理的動作/回調階段沒有內置的方式來添加cookie。這很可能是一個缺陷,並在這個問題上注意到:http://code.google.com/p/seaside/issues/detail?id=48

這是目前將被固定爲Seaside 2.9,但我不知道它是否會被回溯到2.8或不。

請記住,在動作和渲染階段之間已經存在(默認情況下)重定向,以防止刷新重新觸發回調,所以在宏觀方案中,在這種情況下還有一個重定向isn' t 所以不好。

如果你還想深入挖掘,看看WARenderContinuation >> handleRequest :.這就是回調處理被觸發,重定向或渲染階段開始的地方。

編輯補充:

問題現已得到解決,並(在最新的開發代碼),你現在可以適當加餅乾隨時電流響應。只需訪問當前請求上下文中的響應對象並添加cookie即可。例如,你可以這樣做:

self requestContext response addCookie: aCookie 

這是不太可能回遷到海邊2.8,因爲它需要響應的處理方式相當重大轉變。

+0

我並不擔心重定向和代碼中的控制流。謝謝, :) – 2008-09-20 20:49:24

4

我剛剛深入研究了這個問題,答案似乎是否定的。特別是,沒有辦法獲得來自WARenderCanvas或任何它可以訪問的響應(它保存在WARenderingContext上,它保存在WAHtmlStreamDocument上,它保存在響應的上,但不包括響應本身)。我認爲給上下文訪問當前的響應是合理的,正是爲了能夠在其上設置標題,但是你問是否已經有方法,所以:不。

這就是說,Seaside做了很多額外的重定向,並且它對用戶體驗似乎沒有太大的影響,所以可能要做的就是停止擔心它看起來kludgey,並隨着已經存在的API :)

+0

我想弄清楚一個組件如何處理請求,然後呈現不同的組件。必須先重定向然後渲染其他組件會增加代碼設計中的額外步驟。哦,我還在學習。謝謝,:) – 2008-09-20 20:43:25

相關問題