0

ログインしたユーザーが記事を編集できる簡単なページを用意してみましょう。次の状況を想像してください。

ユーザー Bob がシステムにログインし、長い記事を編集しています。そのような記事の編集には非常に時間がかかるため、彼の認証は失効します。その後、送信ボタンをクリックすると、認証が期限切れになったため、ログイン ページにリダイレクトされます。

彼がログインに成功した後、アクション (記事の保存) を終了することが本当に望ましいです。そのため、Bob が認証されていない間に行われたリクエストを復元し、ログインに成功した後、それを繰り返します。ピラミッドでこれをどのように行うことができますか?

4

1 に答える 1

3

必要な部品は 3 つあります。

  1. 認証されたフォームの送信を処理するページは、リクエストが適切に認証されているかどうかを確認し、アクションを実行する必要がありますが、そうでない場合は、すべてのデータをサーバー側セッションに保存し、使用をログイン ページにリダイレクトします。
  2. ログイン ページは、「X を実行しようとしていた」というようなクエリ パラメータを探す必要があります (例:...?fromurl=/post/a/commentユーザーが正常にログインした後、ログイン ページはユーザーをサイトのフロント ページではなくそのページにリダイレクトする必要があります。
  3. ユーザーがリダイレクトされた URL は、認証されていないリクエストに最初に入力したフォームと同じである必要があります。ただし、この場合、サーバーは、このユーザーのサーバー側セッションにフィールド値が格納されていることを認識する必要があります。そのため、すべてのフォーム フィールドにそれらの値を設定する必要があります。ユーザーはすぐに送信を押して、投稿を完了することができます。これは、リクエストに無効なフォーム値が含まれている場合にフィールドが再入力されるのと同様の方法で機能します。

ステップ 3 でポストを直接実行しないことが重要です。元のデータとリクエストは、認証されていないユーザーからのものです。

于 2012-08-30T12:30:42.347 に答える