2015-10-24 3 views
1

У меня есть приложение Rails, для которого я храню сеансы в базе данных, используя activerecord-session_store. Я хочу предотвратить создание сеансов для пользователей, которые не вошли в систему, потому что сейчас каждый искатель, попавший на главную страницу hte-сайта, получает сеанс, который сохраняется в БД.Как предотвратить создание Rails Rails?

В моем приложении используются Rails 4.2.0, activerecord-session_store 0.1.1 и Devise 3.5.2.

ответ

1

Создание сеанса осуществляется с помощью стойки, а commit_session method in Rack::Session::Abstract::ID предоставляет возможность отказаться от сеанса. Я написал метод фильтра в моем ApplicationController уронить сессию, если Разрабатывает-х current_user не определен:

after_filter :skip_session 

def skip_session 
    unless current_user 
    request.session_options = {drop: true} 
    end 
end 

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

1: на самом деле сеанс создается и только не совершается; в моем случае фиксация происходит с БД, но если вы используете сеансы cookie по умолчанию Rails, это предотвратит отправку файла cookie сеанса.

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