Флэш-сообщение не очищается - PullRequest
2 голосов
/ 13 января 2011

При использовании Rails 3.0.3 в Passenger у нас возникает проблема, когда последний набор флэш-памяти сохраняется для каждого запроса.Например, мы устанавливаем флэш-сообщение, если пользователь должен войти в систему в фильтре before:

def require_user
    unless current_user
        store_location
        flash[:notice] = "You must be logged in to access this page"
        redirect_to login_url
        return false
    end
end

Однако при любом последующем запросе после успешного входа пользователя мы все равно получаем сохранение флэш-сообщения., он никогда не очищается для всего сеанса.

В этом примере это единственное место, где мы устанавливаем это сообщение, и я гарантировал, что оно устанавливается только тогда, когда пользователь не вошел в систему. На самом деле, если япоместите flash[:notice] = 'Test' после обновления блока блока и затем удалите эту строку, и флэш-сообщение «Тест» останется для всех последующих запросов.

Это происходит, если вы запускаете приложение в среде разработки или рабочей среды.

Ответы [ 2 ]

1 голос
/ 04 марта 2011

У нас было пользовательское переопределение для Hash#symbolize_keys!, которое зависало из-за какого-то старого кода, и кажется, что, когда промежуточное программное обеспечение cookie вызывает symbolize_keys! для cookie, оно вызывало повторное применение флэш-памяти в конце запрос.

Я сомневаюсь, что кто-то еще столкнется с этой проблемой, но в нашем случае это была проблема.

0 голосов
/ 13 января 2011

Flash-сообщения автоматически очищаются в начале каждого запроса.

Вы уверены, что ваш метод current_user возвращает nil, если пользователь не вошел в систему?

Какую библиотеку вы используете для управления сеансами пользователей? Придумать / Authlogic или другое?

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