3

私は複数のスコープ (この場合はユーザー スコープと管理者スコープ) で Devise を使用しており、管理者はDevise wiki のアプローチを使用してユーザーに「なる」ことができます。ユーザーと管理者の両方のスコープでログインしたセッションで問題を引き起こす認証トークンの使用を必要とする特定のページがあることを除いて、これはうまく機能します。このページは、ユーザーがユーザー認証トークンを使用してログインする必要があるコントローラーへの POST を生成します。POST は成功しますが、その後、管理スコープはサインアウトされています。(つまり、admin_signed_in? は false を返します。) 認証トークンを必要とせずに同じコントローラーに対して POST を実行する他のページは、管理スコープからログアウトせずに期待どおりに機能します。

その特定のトークンに関連付けられているスコープ以外のスコープの認証がログアウトされる token_authenticatable で何かが起こっていると思われます。token_authenticatable 機能の一部として呼び出すことができる devise sign_out メソッドと warden logout メソッドの両方への参照を devise gem ソースで検索しましたが、何も見つかりませんでした。

これは Devise 1.3.4 で発生しています。どんな助けでも大歓迎です。

4

1 に答える 1

1

他の誰かがこれに対する解決策を探している場合に備えて、質問へのコメントで説明した before_filter/after_filter アプローチがうまく機能しているようです。これに対するより良い、より一般的な解決策は、devise gem とその基礎となる warden 呼び出しに変更を加えることだと思いますが、この特定の問題に対してそれらの変更を加える時間がまだありませんでした。

于 2012-05-26T21:12:30.487 に答える