Подтвердить что ты не робот

Как я могу вывести разработчика из консоли Rails?

Мои разработчики - это "database_authenticatable" и "token_authenticatable". Я попытался удалить поле "authentication_token" в базе данных для этого пользователя с консоли, но они все еще, похоже, могут использовать свой существующий токен аутентификации. Удаление пользователя полностью работает, но я не хочу заходить так далеко.

Изменить: для ясности. Я хочу использовать рельсы консоль, чтобы вывести пользователя. т.е. запустите rails console, а затем некоторую команду.

4b9b3361

Ответ 1

Придумайте вспомогательные методы для выполнения этих задач.

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

Надеюсь, что это поможет.

Ответ 2

Если вы используете Devise, вы можете использовать ниже в консоли rails. Это работает идеально для меня, как в моем приложении, если вы используете только 1 сеанс на учетную запись пользователя. Я сохраняю свои сеансы в redisDB.

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

Все, что мне нужно было сделать, это очистить моих пользователей unique_session_id для этого пользователя, а рельсы выталкивают пользователя из сеанса.

Но для нескольких сеансов для одной учетной записи пользователя это не работает.

Если вы хотите очистить все сеансы пользователя, вы можете сделать это из терминала

rake db:sessions:clear

Ответ 4

Я не поклонник шаблона sign_out @user, потому что, по крайней мере, для разрабатываемой версии, которую я использую, она выписывает текущего пользователя, независимо от аргумента, который я передаю. Если вы сохраняете сеансы в своей базе данных, вы можете сделать это:

@user.update_attributes(current_sign_in_token: "")

TBH Я не думаю, что это лучший способ сделать это, но это лучший способ, который я видел в своих собственных исследованиях.

Ответ 5

Я считаю, что вы можете просто обновить пароль_salt, и это приведет к аннулированию сеанса пользователя при следующем запросе.

user = User.first
user.update_column(:password_salt, 'reset')    

Ссылка: http://www.jonathanleighton.com/articles/2013/revocable-sessions-with-devise/

Ответ 6

Возможно, вы сможете использовать помощники, упомянутые другими после включения необходимого модуля:

include Devise::Controllers::SignInOut

source: Модуль: Devise:: Controllers:: SignInOut

Там также есть еще один вопрос, в котором кто-то использует метод, который не включает использование помощников здесь.

Ответ 7

Вы можете создать ссылку на выход в views- > layouts- > application.html.erb как: -

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

Это сработало для меня - надеюсь, это и для других.