Rails разделяет сеансы с activerecord - PullRequest
6 голосов
/ 18 декабря 2008

В настоящее время я использую файлы cookie по умолчанию в качестве единого входа (SSO), но некоторые пользователи получают странные ошибки после того, как я отправляю обновление. Я подумываю перейти к активной записи для хранения сеансов, но мне было интересно, как я сообщаю rails, что сеансы находятся в другой базе данных?

Итак, если я буду хранить сеансы через AR в App1DB, как все другие приложения смогут узнать, где искать сеансы?

Ответы [ 4 ]

9 голосов
/ 18 декабря 2008

Rails наверняка поддерживает хранилище сеансов базы данных.

В config / environment.rb, раскомментировать

# config.action_controller.session_store = :active_record_store

Изучение \ actionpack-2.2.2 \ lib \ action_controller \ session \ active_record_store.rb показывает, что CGI :: Session :: ActiveRecordStore :: Session наследуется от ActiveRecord :: Base.

Так что в конце config / environment.rb вы должны иметь возможность сказать

CGI::Session::ActiveRecordStore::Session.establish_connection(
                              :adapter => "mysql",
                              :host => "otherserver",
                              :username => "session_user",
                              :password => "123ABC",
                              :database => "sessions")

или

CGI::Session::ActiveRecordStore::Session.establish_connection(:sessions)

для использования соединения, определенного в config / database.yml


Например, добавить в config / database.yml:

 sessions_development:
   adapter: mysql
   host: otherserver
   username: sessions_user
   password: 123ABC
   database: sessions

Добавить в конец config / environment.rb

 CGI::Session::ActiveRecordStore::Session.establish_connection("sessions_#{RAILS_ENV}")
1 голос
/ 09 октября 2010

в рельсах 2,3

открыть config / initializers / session_store.rb

раскомментируйте строку ActionController::Base.session_store = :active_record_store

изменить значение ключа в строке, которая выглядит как :key => '_YOUR_APP_NAME_session'

затем перезагрузите сервер.

Результат изменит ваш магазин и лишит законной силы все старые куки

0 голосов
/ 18 декабря 2008

Можем ли мы получить разъяснения по вашему вопросу? У вас есть несколько разных приложений Rails, которые вы хотите использовать в одном хранилище сеансов? Я спрашиваю, потому что вы упоминаете SSO и несколько серверов приложений.

0 голосов
/ 18 декабря 2008

Документация rails для конфигурации сеанса (http://api.rubyonrails.org/classes/ActionController/SessionManagement/ClassMethods.html#M000312) говорит, что это единственные параметры: http://api.rubyonrails.org/classes/ActionController/Base.html#M000523. Поскольку параметр, для которого используется база данных, отсутствует в списке, он, вероятно, не существует .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...