Я изменил свой session_store
, чтобы иметь возможность делиться между поддоменами. Я использую Devise для управления пользователями, и когда я смотрю файлы cookie, я вижу что-то вроде:
_my_app_session = 3b9dcd63583ec6701a27b9eefa8a26b4
где значение - это идентификатор сеанса. Как использовать это значение, чтобы узнать, кто вошел на сайт?
Я даже не знаю, как это использовать
Я считаю, что если у вас есть контроллер, просто вставьте pry
в одно из действий и попробуйте эту строку. Кроме того, если вы используете последнюю версию devise, она должна быть User.find(session["warden.user.user.key"][0][0])
.
Я все еще в замешательстве. Я хотел бы использовать это в SessionsController
Вы пытаетесь проверить, существует ли уже сеанс для пользователя? затем вы можете поместить это в before_action и, если вы найдете пользователя, перенаправьте его на нужную страницу; в противном случае переведите его на страницу входа в систему.
Я пытаюсь поделиться переменными сеанса между поддоменами и не хочу заставлять пользователей входить в оба поддомена
Вы не можете получить идентификатор пользователя только из идентификатора сеанса. Идентификатор сеанса - это просто секрет, хранящийся как у клиента, так и у сервера, который используется как для проверки того, что хранилище сеанса все еще действует, так и для связывания его с конкретным клиентом. Фактическое требование (идентификатор) хранится в хранилище сеанса (другой файл cookie), и вы можете получить к нему доступ через сеанс или через warden. guides.rubyonrails.org/security.html#session-id
Я сам не пробовал, вы можете это проверить?
User.find(session["warden.user.user.key"][1][0])