1

複数のリダイレクトを使用しており、A->B->C->A からリダイレクトしたいと考えています。

したがって、Bでは、パスAを次のように保存します

@previouspage = request.referer

したがって、この時点で @previouspage = A ですが、C で @previouspage を呼び出すと、B に保存されたハード値は取得されず、B である独自の相対 request.referer が見つかります。

したがって、C では @previouspage = B (Ruby の変数はソフトリンクだと思うため)

request.referer の値がポイント B にあったものを保存し、その URL を後でアクセスできる変数に保存するにはどうすればよいでしょうか?

4

3 に答える 3

3

HTTP はステートレス プロトコルです。変数はリクエスト間で記憶されません。リクエスト間で状態を保存したい場合は、セッションを使用できます。Rails では、次のように行われます。

B:

session[:page_a] = request.referer

C:

@next_page = session[:page_a]

Rails セキュリティ ガイドは、セッションとその脆弱性から始まります。あなたはそれをチェックしたいかもしれません。

于 2012-07-09T11:41:17.793 に答える
2

これを機能させるために必要な3つのこと

  • セッションの使用: sessions[:original_page]=request.referrer
  • ログイン後にセッションが更新されるという事実の説明 (nil の場合はチェック)
  • コントローラーで使用した直後に session[:original_page]=nil を設定することを忘れないでください。
于 2012-07-09T15:23:03.190 に答える
2

Rails 変数はリクエスト間で保持されません。一部のデータを保存する場合は、次のことを行う必要があります。

  • (セッション)Cookieに保存します
  • データベースに保存します
  • あなたの袖からいくつかのトリックを引き出し、リファラーをパラメーターまたはそのようなものとして渡しますが、まったくお勧めしません。
于 2012-07-09T11:40:21.923 に答える