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

Как я могу reset создавать все сеансы, чтобы каждый пользователь снова заходил в систему?

В какой-то загадочной точке X с этим приложением rails, размещенным на герою, зарегистрированный пользователь внезапно будет зарегистрирован как другой пользователь. Я использую камень для аутентификации.

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

Что мне нужно сделать прямо сейчас, это аннулировать все сеансы разработки, чтобы заставить пользователей войти в систему еще раз. После входа пользователя в систему проблема исчезает.

Я попробовал перепродать мою secret_token, но я не был вынужден снова войти в систему. Затем я масштабировал свои веб-диноды, а затем возвращался обратно. Я также перезапустил приложение. Все попытки заставить secret_token изменить на reset сеансы.

Любые другие идеи?

4b9b3361

Ответ 1

Изменение сеанса session_token будет работать, если вы сохраняете свои сеансы в файлах cookie (по умолчанию).

Но если вы храните в active_record, вы можете удалить все сеансы с помощью:

rake db:sessions:clear

затем: BAM! больше сеансов.

Ответ 2

Вы должны иметь возможность изменить свое имя cookie сеанса, чтобы аннулировать все сеансы, которые живут в config/initializers/session_store.rb

YourApp::Application.config.session_store :cookie_store, key: '_change_me_session'

Ответ 3

Если ваши сеансы не хранят никакой другой важной информации, вы можете очистить сеансы:

rake db:sessions:clear

Ответ 4

У Devise есть вещь, называемая timeoutable, с которой вы можете работать?

Ответ 5

Отъезд

  module ClassMethods
    Devise::Models.config(self, :timeout_in)
  end

Я просто предполагаю, что вы можете сделать что-то вроде:

User.all.each do |user|
  user.timeout_in 1.second
end

Но я не уверен, что это управляет только новыми сеансами.. и не существующими?

На самом деле это слишком сложно.. просто попробуйте:

User.all.each do |user|
  sign_out user
end

См. этот пост Выйти из всех пользователей с помощью Devise

чтобы сделать что-то подобное с консоли, вам нужно будет проверить этот пример и настроить его для своих нужд

Как войти в систему с помощью утилиты с помощью консоли Rails?

Ответ 6

Обновление принятого ответа, теперь это

rake tmp:clear

rake -T ... rake tmp:create # Creates tmp directories for sessions, cache, sockets, and pids

Ответ 7

sign_out_all_scopes (lock = true) ⇒ Объект

Выйти из всех активных пользователей или областей. Этот помощник полезен для выделения всех ролей одним щелчком мыши. Это означает, что все надписи в начальнике. Возвращает true, если был хотя бы один выход из системы и false, если не было зарегистрировано ни одного пользователя во всех областях.

Источник: http://www.rubydoc.info/github/plataformatec/devise/Devise/Controllers/SignInOut

Ответ 8

Когда используется хранилище файлов cookie, мы должны восстановить приложение secret_token, которое используется для шифрования файлов cookie.

для настройки secret_token: config/initializers/secret_token.rb

bundle exec rake secret Может использоваться для создания нового секретного токена.

https://www.tigraine.at/2012/08/03/how-to-expire-all-active-sessions-in-rails-3