web-dev-qa-db-ja.com

Railsコンソールからdeviseユーザーをサインアウトするにはどうすればよいですか?

私のdeviseユーザーは「database_authenticatable」と「token_authenticatable」です。そのユーザーのデータベースの「authentication_token」フィールドをコンソールから削除しようとしましたが、既存の認証トークンを使用できるようです。ユーザーを完全に削除することはできますが、そこまで行きたくありません。

編集:明確にするため。 Rails consoleを使用してユーザーをサインアウトします。つまり、Rails consoleその後、いくつかのコマンド。

33
joseph.hainline

Deviseは、これらのことを行うヘルパーメソッドを提供します。

user = User.find(params[:id])
sign_in user
sign_out user

お役に立てれば。

14
Ankit Samarthya

Sign_outメソッドを試してください:

sign_out @user 

Deviseマニュアル

1
patrick

Deviseを使用している場合、Railsコンソールで以下を使用できます。ユーザーアカウントごとに1つのセッションのみを使用している場合、これは私のアプリのように最適です。セッションをredisDBに保存しています。

user = User.first
user.update_attributes(unique_session_id: "")

私がしなければならなかったことは、そのユーザーのユーザーunique_session_idをクリアし、Railsでセッションから追い出されます。

ただし、同じユーザーアカウントの複数のセッションでは、これは機能しません。

すべてのユーザーセッションをクリアする場合は、ターミナルから以下を実行できます。

rake db:sessions:clear
0
Anto Dominic

セッションを保存する属性トークンのようです:

user.tokens = nil
user.save
0
mpz

私がsign_out @userパターンのファンではないのは、少なくとも私が使用しているdeviseバージョンでは、引数に関係なく現在のユーザーをサインアウトするためです。データベースにセッションを保存している場合、これを行うことができます:

@user.update_attributes(current_sign_in_token: "")

TBHそれが最善の方法だとは思いませんが、私自身の研究で見た最善の方法です。

0
octopushugs