2013-10-09 3 views
0

У меня есть два рельсовых приложения, работающих в одном домене. Они оба требуют знания текущего пользователя. Раньше мы обрабатывали это с помощью localStorage, но проблемы безопасности привели нас к переходу на хранилище сеансов базы данных.Rails 3: Активные сеансы записи между двумя приложениями

У каждого приложения есть своя собственная база данных (и пока будет). Есть ли способ сообщить мне приложение B использовать хранилище сеансов для приложения A? Могу ли я определить отношение базы данных и таблицы к этому?

ответ

0

ActiveRecord :: Base.establish_connection должен помочь. Если предположить, что название модели Session на приложение B, попробовать что-то вроде этого:

class Session < ActiveRecord::Base 
    establish_connection :adapter => 'mysql2', :database => 'database_of_app_a', :host => 'localhost', :username => 'database_of_app_a_username', :password => 'database_of_app_a_password' 
end 
0

Я успешно делал это между Rails 3 и приложение Rails 4 на том же хосте с идентичными настройками базы данных.

Они должны иметь один и тот же секретный ключ в инициализаторах/secret_token.rb

AppB::Application.config.secret_key_base = "same-as-app-a" 

и имя таблицы устанавливается в инициализаторах/session_store.rb

AppB::Application.config.session_store :active_record_store 

ActiveRecord::SessionStore::Session.table_name = 'app_a_sessions' 

Рельсы 4 приложения не имеют даже страница входа в систему - она ​​перенаправляется на страницу входа в приложение Rails 3 и обрабатывает аутентификацию для обоих из них.

Смежные вопросы