4

Rails アプリを認証するために OmniAuth を使用して、Devise で多くの問題が発生しています。サーバーを再起動し、シークレット モードで新しいタブを開き (Cookie がクリアされるように)、アプリを読み込みます。ログインしてから、アプリに進みます。

AJAX 経由で認証済みアクションを呼び出すページに到達すると、HTTP 基本認証経由でユーザー名とパスワードを要求されます。これをdevise.rbで無効にしました。

config.http_authenticatable = false
config.http_authenticatable_on_xhr = false

その後、前のページに戻ると、ログイン ページにリダイレクトされ、ログインを求められます。これは、認証を必要としないページにアクセスしてから、認証されたページに戻ったときにも発生します。

これは非常にイライラしています。Devise と Warden をvendor/gemsディレクトリに展開してデバッグを試みましたが、正直なところ、どこから始めればよいかわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

3

AJAX呼び出しはおそらくCSRFトークンを設定していません。UJS gem(おそらくjquery-rails)を更新するか、X-CSRF-TokenHTTPヘッダーをタグの値に手動で設定する必要がある場合があります。この質問を参照してください:.js呼び出し[AJAX]ですぐに期限切れになるデバイスセッションconfig.allow_forgery_protection = falseをチャックしてCSRF保護を一時的に無効にすることで、これが問題であるかどうかをテストできますconfig/application.rb

手動ルートを使用する場合は、「csrf-token」への参照をハードコーディングするのではなく、最初に「authenticity_token」メタタグの値を取得し、それを実際のトークンメタタグの名前として使用する必要があります。

可能であれば、Rails3.0.10または3.1に更新することをお勧めします。3.0.7でもまだ問題がありました。

于 2011-09-25T22:27:06.053 に答える