Les utilisateurs de mon instrument sont "database_authenticatable" et "token_authenticatable". J'ai essayé de supprimer le champ "authentication_token" dans la base de données pour cet utilisateur de la console, mais ils semblent toujours capables d'utiliser leur jeton d'authentification existant. Supprimer l'utilisateur fonctionne entièrement, mais je ne veux pas aller aussi loin.
Edit: pour plus de clarté. Je souhaite utiliser Rails console pour déconnecter un utilisateur. c’est-à-dire lancer Rails console
puis une commande.
Devise fournit des méthodes d'assistance pour faire ces choses.
user = User.find(params[:id])
sign_in user
sign_out user
J'espère que cela t'aides.
Si vous utilisez Devise, vous pouvez utiliser ce qui suit dans votre console Rails . Cela fonctionne parfaitement pour moi comme dans mon application si vous utilisez seulement 1 session par compte d'utilisateur. Je stocke mes sessions dans redisDB.
user = User.first
user.update_attributes(unique_session_id: "")
Tout ce que je devais faire était d'effacer mon unique_session_id d'utilisateurs pour cet utilisateur et Rails le chasser de la session
Mais pour plusieurs sessions pour le même compte d'utilisateur, cela ne fonctionne pas.
Si vous souhaitez effacer toutes les sessions utilisateur, vous pouvez effectuer les opérations suivantes depuis le terminal.
rake db:sessions:clear
Il semble que les jetons d'attribut sauvent des sessions:
user.tokens = nil
user.save
Je ne suis pas un fan du modèle sign_out @user
car, du moins pour la version simplifiée que j'utilise, cela déconnecte l'utilisateur actuel, quel que soit l'argument que je lui passe. Si vous stockez des sessions dans votre base de données, procédez comme suit:
@user.update_attributes(current_sign_in_token: "")
TBH Je ne pense pas que ce soit la meilleure façon de le faire, mais c'est la meilleure façon que j'ai vue dans mes propres recherches.