Я использую Devise для аутентификации в моем приложении Rails 3. Приложение использует схемы PostgreSQL и жемчужину квартиры для облегчения многопользовательской аренды.
Вход и выход из определенного субдомена отлично работает после создания учетной записи. Пользователи могут только войти в субдомен для своей конкретной учетной записи, что отлично.
Здесь, где я сталкиваюсь с проблемами...
Новый пользователь попадает на URL регистрации:
http://foo.com/signup
По умолчанию, когда они нажимают кнопку "Отправить", создается новая учетная запись, но пользователь отправляется по адресу:
http://foo.com/dashboard
Вместо этого я хочу, чтобы они переходили к:
http://myaccount.foo.com/dashboard
Чтобы достичь этого, я перепробовал метод after_sign_up_path_for
в моем файле registrations_controller.rb
:
def after_sign_up_path_for(resource)
root_url(:subdomain => resource.account.subdomain)
end
Это работает по назначению - он загружает правильный URL-адрес, но пользовательский сеанс был создан для корневого домена (foo.com) вместо поддомена, поэтому пользователю предлагается выполнить вход.
Одно из предложений, которое я нашел, - изменить config/initializers/session_store.rb
на:
config.session_store :cookie_store, :key => '_domain_session', :domain => :all
Но это позволяет любому войти в учетную запись на любом субдомене, что, очевидно, не круто.
Вопрос: Как я могу убедиться, что сеанс, созданный при регистрации, действителен для субдомена, созданного во время процесса регистрации