0

Rails 3.2.6 と Devise 2.1.2 を実行している Rails アプリがあり、同時ログインを 1 に制限したいと考えています。

代わりに、この SO 記事のように Devise の動作をオーバーライドできるかどうかを確認したい:一度にユーザーごとに 1 つのセッションを制限する

私はそれがどのように機能するかを理解し、セッション コントローラーを生成しましたが、アプリにそれを強制的に Devise のオーバーライドとして使用させる方法がわかりません。また、コントローラーでは、アプリケーションコントローラーまたはデバイスコントローラーから継承する必要がありますか?

現在、すべてが整っていますが、アプリは login_token を書き込みません。これは、コントローラーを適切に使用していないか、他の何かが間違っている可能性があることを示しています。

どんな助けでも大歓迎です。

4

1 に答える 1

0

Devise Wikiを確認することを強くお勧めします。このようなことをしているときに、答えはそこにある可能性があります。新しいコントローラーは、Devise セッションコントローラーから継承する必要があります。

class MySessionsController < Devise::SessionsController

このようにして、具体的にオーバーライドしなかったメソッドは引き続き呼び出されるため、他の機能が損なわれることはありません。

Devise が自分のコントローラーではなくあなたのコントローラーを使用するようにするには、次のようにdevise_for呼び出しを行います。routes.rb

devise_for :users, :controllers => { :sessions => "my_sessions" }

そこから、Devise がコントローラーを受け取ります。念のため、そこでサーバーを再起動することをお勧めします。

于 2012-08-30T14:58:10.060 に答える