5

Seaside で小さな Web アプリケーションを作成しています。ログイン コンポーネントがあり、ユーザーがログインした後、次のコンポーネントがレンダリングされるときに Cookie を送信したいと考えています。出力するヘッダーに何かを追加できるように、応答を処理するオブジェクトを取得する方法はありますか?

Cookieを設定したいという理由だけでリダイレクトするのはかなり面倒なので、 WASession>>redirectWithCookies の使用を避けようとしています。

次の応答で送信される Cookie を追加する別の方法はありますか?

4

2 に答える 2

5

現在、リクエスト処理のアクション/コールバック フェーズ中に Cookie を追加する組み込みの方法はありません。これは欠陥である可能性が高く、次の問題に記載されています: http://code.google.com/p/seaside/issues/detail?id=48

これは現在、Seaside 2.9 で修正される予定ですが、2.8 にバックポートされるかどうかはわかりません。

Refresh がコールバックを再トリガーするのを防ぐために、アクション フェーズとレンダリング フェーズの間に既に (デフォルトで) リダイレクトがあることに注意してください

さらに掘り下げたい場合は、WARenderContinuation>>handleRequest: をご覧ください。ここでコールバック処理がトリガーされ、リダイレクトまたはレンダリング フェーズが開始されます。

追加するために編集:

この問題は現在修正されており、(最新の開発コードでは) いつでも現在の応答に Cookie を適切に追加できるようになりました。現在のリクエスト コンテキストでレスポンス オブジェクトにアクセスし、Cookie を追加するだけです。たとえば、次のようにします。

self requestContext response addCookie: aCookie

応答の処理方法にかなり大きな変更が必要だったため、これが Seaside 2.8 にバックポートされる可能性は低いです。

于 2008-09-18T07:20:58.587 に答える
4

これについて詳しく調べてみたところ、答えはノーのようです。具体的には、WARenderCanvas またはそれがアクセスできるものからの応答を取得する方法はありません (応答自体ではなく、応答のストリームを保持する WAHtmlStreamDocument を保持する WARenderingContext を保持します)。コンテキストに現在の応答へのアクセスを許可し、正確にヘッダーを設定できるようにすることは合理的だと思いますが、すでに方法があるかどうかを尋ねたので、いいえ。

とは言っても、Seaside は多くの余分なリダイレクトを行っており、ユーザー エクスペリエンスに大きな影響を与えていないようです。そのため、やっかいだと思われることを心配するのをやめて、既にある API の流れに乗ることかもしれません。そこの :)

于 2008-09-18T07:14:24.657 に答える