Причудливый аутлогический вопрос только в производстве - PullRequest
3 голосов
/ 26 января 2010

Контекст : приложение rails с authlogic для входа в систему и входа в систему Информация о настройке: Rails 2.3.2

Контроллер вызвал сообщения с действием 'show'. При входе в систему я отображаю пост / индексную страницу.

и когда пользователь нажимает на элемент, отображается информация об элементе. Довольно стандартный материал.

Все это прекрасно работает как в разработке, так и в производстве (Apache с Passenger 2.2.5 для Ubuntu и MySQL), за исключением одной проблемы в одном случае:

Задача : ТОЛЬКО в Firefox / Safari / Chrome (IE7 в порядке) и ТОЛЬКО в ПРОИЗВОДСТВЕ,

Когда пользователь в первый раз входит в новый сеанс (откройте новый браузер, введите URL), индексная страница отображается нормально и когда элемент нажимается, пользователь загадочным образом выходит из системы (current_user возвращает ноль).

При повторном входе в систему все НАЗАД нормализуется - вы можете выходить из системы и входить в систему любое количество раз и без проблем - пока вы не закроете браузер и не начнете снова.

Любое другое действие, кроме 'show', сохраняет current_user и работает нормально.

ВОПРОС : Как пользовательский сеанс теряется при таком вызове posts / id только один раз - впервые? Действие шоу ничего особенного не делает.

Я использовал хранилище ActiveRecord и файлы cookie для управления сеансами с одинаковым поведением.

Кто-нибудь получил какие-либо подсказки, с благодарностью!

1 Ответ

3 голосов
/ 27 января 2010

Это может происходить, потому что пользователь перенаправляется из: http://yoursite.com до http://www.yoursite.com

Вот блог, в котором упоминается эта проблема: http://garrickvanburen.com/archive/rails-cookie-settings-for-cross-subdomain-sessions

Перефразируя блог: Исправление должно установить: config.action_controller.session[:domain] = '.YOURDOMAIN.COM' внутри environment.rb (убедитесь, что перед ним стоит .). Благодаря этому файлы cookie будут работать как для www.yourdomain.com, так и для yourdomain.com (а также для любых других поддоменов).

Эта техника также обсуждается здесь: Потеря сеанса в приложении rails 2.3.2 с использованием субдомена

...