rails logger log ruby-on-rails devise logout

ruby-on-rails - logger - rails console



¿Cómo puedo desconectar a un usuario de la consola de Rails? (6)

Mis usuarios de diseño son "database_authenticatable" y "token_authenticatable". He intentado eliminar el campo "authentication_token" en la base de datos para ese usuario desde la consola, pero todavía parecen poder usar su token de autenticación. Eliminar al usuario funciona completamente, pero no quiero llegar tan lejos.

Editar: para mayor claridad. Quiero usar la consola de rieles para desconectar a un usuario. es decir, ejecuta la rails console y luego algún comando.


Idear proporcionar métodos de ayuda para hacer estas cosas.

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

Espero que esto ayude.


No soy seguidor del patrón sign_out @user porque, al menos para la versión de sign_out @user que estoy usando, eso sign_out @user la sign_out @user del usuario actual, independientemente del argumento por el que lo paso. Si está almacenando sesiones en su base de datos, puede hacer esto:

@user.update_attributes(current_sign_in_token: "")

TBH: No creo que sea la mejor manera de hacerlo, pero es la mejor forma que he visto en mi propia investigación.



Puede crear un enlace de cierre de sesión en views-> layouts-> application.html.erb como: -

<= link_to ''Log Out'', destroy_user_session_path, method: :delete %>

Me funcionó, espero que también lo haga para otros.


Puede usar los ayudantes que otros han mencionado después de incluir el módulo necesario:

include Devise::Controllers::SignInOut

fuente: Módulo: Devise :: Controladores :: SignInOut

También hay otra pregunta SO en la que alguien comparte un método que no implica el uso de ayudantes de Devise aquí .


Si está utilizando Devise, puede usar lo siguiente en su consola de rieles . Esto funciona perfecto para mí como en mi aplicación si solo está utilizando 1 sesión por cuenta de usuario. Estoy almacenando mis sesiones en redisDB.

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

Todo lo que tenía que hacer era borrar mis usuarios unique_session_id para ese usuario y los rieles expulsan al usuario de la sesión.

Pero para sesiones múltiples para la misma cuenta de usuario esto no funciona.

Si desea borrar todas las sesiones de usuario, puede hacer lo siguiente desde la terminal

rake db:sessions:clear