Доступ к информации о сеансе rails по идентификатору сеанса
-
20-09-2019 - |
Вопрос
Я использую хранилище сеансов на основе файлов cookie по умолчанию.По сути, я использую heroku, и мне нужно перейти из моего приложения: http://test1.myapp.com перейдите на heroku на одну страницу: http://myapp.heroku.com/billing - итак, мне нужно получить доступ к сеансу, когда я перехожу по URL heroku.Я бы хотел получить доступ к сеансу [:user_id] на странице heroku, но при переходе на страницу heroku генерируется новый сеанс.
Я думал, что мог бы передать session_id по основному URL-адресу в строке запроса, но я не знаю, как получить к нему доступ со страницы URL heroku.
Я попробовал это:
session[params[:sid]][:user_id]
но это не работает.Можно ли получить доступ к информации о сеансе, если вы знаете идентификатор сеанса?Или есть другой способ прочитать информацию о сеансе с другого URL (но все в том же приложении rails)?
Спасибо.
Решение
Для того чтобы это сработало, вам нужно будет настроить свой домен в Heroku таким образом, чтобы приложение Heroku работало под тем же TLD, что и основное приложение.Чтобы сделать это, добавьте свой домен в приложение для выставления счетов следующим образом:
$ heroku domains:add billing.myapp.com
Обязательно следуйте Инструкции Героя чтобы настроить ваш DNS.
Затем ваше приложение для выставления счетов будет работать по адресу http://billing.myapp.com/billing (на Героку).Таким образом, контроллер должен иметь доступ к одному и тому же сеансу и файлам cookie.
Обязательно установите домен сеанса в environments/production.rb в обоих приложениях:
config.action_controller.session = { :domain => ".myapp.com" }
Я должен также упомянуть, что вы могли бы рассмотреть возможность использования какой-либо общей аутентификации или аутентификации по токенам между приложениями, поскольку файлы cookie потенциально могут быть взломаны или иным образом скомпрометированы.