3

私は、Radiant CMS/Ruby on Rails アプリケーションにかなり大規模な変更を加えています - Radiant 1.* へのアップグレードと多くの gem の変更 - その過程で、ユーザー セッションの維持に問題が発生し始めました。通常の呼び出しは正常に機能していますが、着信する AJAX 呼び出しでは、ユーザーのアクティブなセッションが見つからず、新しいセッションが作成されます。

Cookie ストアを使用しているため、おそらく何か問題が発生している可能性がありますが、何をどこで確認すればよいかわかりません。Request ヘッダーを調べると、AJAX 呼び出しの Cookie ヘッダーにセッション Cookie が渡されているようです。Cookie ヘッダーで渡される内容は、両方のタイプの要求で同じように見えます。ただし、コントローラーでセッション変数を取得すると、標準の http 呼び出しではなく ajax 呼び出し用に新しいセッションが作成されます。

何が起こっているのか、または何が起こっているのかをデバッグするためにどこを見ればよいのでしょうか?

4

1 に答える 1

3

この問題は、セキュリティ トークンが Ajax 呼び出しで渡されない可能性があり、これにより認証ジェムがユーザーをログアウトさせます。すべての Ajax 呼び出しでセキュリティ トークンを透過的に渡す方法を次に示します。

アプリ/ビュー/レイアウト/application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <%= csrf_meta_tags %>
    (...)

次に、jquery-ujs gem を Gemfile に追加します。

Gemfile

gem "jquery-ujs"

アプリケーションの JavaScript ファイルの jquery 行の下に次の行を追加します。

アプリ/アセット/application.js

//= require jquery-ujs

jquery-ujs gemの詳細はこちら

于 2012-10-11T18:20:25.980 に答える