管理セクションでは、現在ログインしているユーザーのリストを表示しています。管理者は、1 人以上のユーザーを選択して、セッションを破棄 (ログアウト) できるようになりました。どこから始めればいいのかわかりません、助けてください。
3 に答える
sign_out
ユーザーオブジェクトを渡すことにより、コントローラーアクションでメソッドを使用できます。
# Make sure only admins can do this
def sign_out_user
@user = User.find(params[:id])
sign_out @user
end
詳細はこちら:
http://rubydoc.info/github/plataformatec/devise/master/Devise/TestHelpers%3asign_out
ユーザーが必要なユーザーのコレクションであると考えると、
for user in users
sign_out user
end
それはあなたの問題を解決するはずです。
それが役に立てば幸い :)
Devisesign_out
が提供する方法は役に立ちません。ドキュメントには、要求した「リソース」をログアウトすると書かれていることは知っていますが、gem 自体 (devise と warden) を掘り下げると、ユーザーなどのオブジェクトを与えると、単に何がわかるかがわかります。オブジェクトが属するスコープ (つまり、:user) を削除し、そのスコープ全体をログアウトします。
Devise のスコープは、ログイン用の名前空間です。ログインが必要な Customer モデルだけでなく、ログインが必要な Vendor モデルもある場合、それらには異なるスコープを使用します。ほとんどのアプリケーションは、User モデルに関連付けられた単一のスコープのみを使用します。
おそらく:cookie_store
Railsのデフォルトであるセッションストレージに使用しています。この場合、自分以外のユーザーを 1 人でもログアウトすることはできません。Devise はログイン情報をセッションに保存します。これは、データベースではなく Cookie に保存されます。彼らのブラウザーには資格情報があるため、それを直接削除することはできません。