Как я могу reset создавать все сеансы, чтобы каждый пользователь снова заходил в систему?
В какой-то загадочной точке X с этим приложением rails, размещенным на герою, зарегистрированный пользователь внезапно будет зарегистрирован как другой пользователь. Я использую камень для аутентификации.
Это произошло для 2 пользователей, о которых мы знаем. В настоящее время я отслеживаю причину этой проблемы.
Что мне нужно сделать прямо сейчас, это аннулировать все сеансы разработки, чтобы заставить пользователей войти в систему еще раз. После входа пользователя в систему проблема исчезает.
Я попробовал перепродать мою secret_token, но я не был вынужден снова войти в систему. Затем я масштабировал свои веб-диноды, а затем возвращался обратно. Я также перезапустил приложение. Все попытки заставить secret_token изменить на reset сеансы.
Любые другие идеи?
Ответы
Ответ 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