2

管理セクションでは、現在ログインしているユーザーのリストを表示しています。管理者は、1 人以上のユーザーを選択して、セッションを破棄 (ログアウト) できるようになりました。どこから始めればいいのかわかりません、助けてください。

4

3 に答える 3

5

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

于 2013-04-24T14:56:30.263 に答える
1

ユーザーが必要なユーザーのコレクションであると考えると、

for user in users
  sign_out user
end

それはあなたの問題を解決するはずです。

それが役に立てば幸い :)

于 2013-04-24T14:57:07.733 に答える
0

Devisesign_outが提供する方法は役に立ちません。ドキュメントには、要求した「リソース」をログアウトすると書かれていることは知っていますが、gem 自体 (devise と warden) を掘り下げると、ユーザーなどのオブジェクトを与えると、単に何がわかるかがわかります。オブジェクトが属するスコープ (つまり、:user) を削除し、そのスコープ全体をログアウトします。

Devise のスコープは、ログイン用の名前空間です。ログインが必要な Customer モデルだけでなく、ログインが必要な Vendor モデルもある場合、それらには異なるスコープを使用します。ほとんどのアプリケーションは、User モデルに関連付けられた単一のスコープのみを使用します。

おそらく:cookie_storeRailsのデフォルトであるセッションストレージに使用しています。この場合、自分以外のユーザーを 1 人でもログアウトすることはできません。Devise はログイン情報をセッションに保存します。これは、データベースではなく Cookie に保存されます。彼らのブラウザーには資格情報があるため、それを直接削除することはできません。

于 2016-01-06T22:12:12.833 に答える