После того, как пользователь вошел в систему (ENV['warden'].authenticate!
'd) один раз, как warden
это знаете? Я не могу найти ничего в cookie, за исключением значения rack.session
- я не мог понять это из документации или кода.Как учитель получает текущего пользователя из сеанса стойки?
4
A
ответ
0
В Devise/Библиотека/Разрабатывают/Контроллеры/helpers.rb: 35
def devise_group(group_name, opts={})
mappings = "[#{ opts[:contains].map { |m| ":#{m}" }.join(',') }]"
class_eval <<-METHODS, __FILE__, __LINE__ + 1
def authenticate_#{group_name}!(favourite=nil, opts={})
unless #{group_name}_signed_in?
mappings = #{mappings}
mappings.unshift mappings.delete(favourite.to_sym) if favourite
mappings.each do |mapping|
opts[:scope] = mapping
warden.authenticate!(opts) if !devise_controller? || opts.delete(:force)
end
end
end
def #{group_name}_signed_in?
#{mappings}.any? do |mapping|
warden.authenticate?(scope: mapping)
end
end
def current_#{group_name}(favourite=nil)
mappings = #{mappings}
mappings.unshift mappings.delete(favourite.to_sym) if favourite
mappings.each do |mapping|
current = warden.authenticate(scope: mapping)
return current if current
end
nil
end
def current_#{group_name.to_s.pluralize}
#{mappings}.map do |mapping|
warden.authenticate(scope: mapping)
end.compact
end
helper_method "current_#{group_name}", "current_#{group_name.to_s.pluralize}", "#{group_name}_signed_in?"
METHODS
end
https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/helpers.rb
Экспликация: метод devise_group запуска на старте сервера динамически создавая вспомогательные методы (Текущий_пользователь например), которые являются оберткой для начальника , где пользователь фактически сохранен, находится внутри метода warden.authenticate, содержание которого
def warden
request.env['warden']
end
а также указан в том же файле
+1
Будет полезно, если вы добавите некоторое описание того, что вы пытаетесь передать с помощью этого фрагмента кода –
Смежные вопросы
- 1. Как получить таблицы из текущего сеанса/пользователя
- 2. Yii2 удаленный выход из сеанса пользователя с текущего сеанса пользователя
- 3. Идентификатор пользователя из текущего сеанса пользователя из импортирующей функции csv
- 4. Серверный выход из текущего сеанса
- 5. Как получить userId из текущего сеанса?
- 6. Shiro + Stormpath получает текущего пользователя в сервлете
- 7. CloudKit получает все подписки от текущего пользователя
- 8. Экспорт функций из текущего сеанса
- 9. Сайт администратора автоматически получает текущего пользователя
- 10. получает имя текущего пользователя в бритве
- 11. Sharepoint не получает текущего пользователя NetworkCredential из активного каталога
- 12. Отобразить строку текущего сеанса
- 13. ASP.NET Как динамически изменять время сеанса для текущего зарегистрированного пользователя?
- 14. Как получить пользовательские данные текущего пользователя сеанса? PHP & MySQLi
- 15. Как получить знакомых пользователей не текущего пользователя сеанса?
- 16. Как получить информацию текущего пользователя с помощью сеанса
- 17. Олицетворять текущего пользователя из службы
- 18. Получение текущего входа в систему Пользователь с другого сеанса пользователя
- 19. Отображение имени текущего сеанса
- 20. Как определить текущего пользователя?
- 21. Как получить данные текущего пользователя из firebase
- 22. Получить пользователя из сеанса пользователя jackrabbit
- 23. стратегии при получении имени пользователя из сеанса
- 24. Cakephp читает пользователя из сеанса
- 25. Получить объект пользователя из сеанса
- 26. получить имя пользователя текущего сеанса в java-сервисе
- 27. Создание новых пользователей без сброса текущего сеанса пользователя
- 28. Как получить идентификатор текущего зарегистрированного пользователя?
- 29. сохранение текущего сеанса пользователя активным с использованием синтаксического анализа?
- 30. Удержание «текущего пользователя» в threadlocal
Можете ли вы уточнить вопрос? 'env ['rack.session']' содержит сеанс для этого конкретного пользователя и содержит 'warden.user.key' или что-то еще ... – mhutter
@mhutter Но где это хранится на сервере? Кажется, это Marshalled (https://github.com/rack/rack/blob/master/lib/rack/session/cookie.rb), но я не могу найти, где он хранится. Кажется, есть два варианта: Memcached и Pooled, но не могут найти, какой из них по умолчанию, и который используется, когда. Я знаю, что он сохраняется после выключения сервера, поэтому memcached? – Cenoc
Вы уверены, что это повторяется при перезагрузке? По умолчанию используется «Пул», который хранит данные в «Хэш»: https://github.com/rack/rack/blob/master/lib/rack/session/pool.rb#L33 – mhutter