Сессия Omniauth истекает при закрытии браузера - PullRequest
7 голосов
/ 07 февраля 2012

В моем приложении rails 3 я использую Omniauth для аутентификации пользователя (fb / twitter).

На самом деле я следую этому:

https://github.com/RailsApps/rails3-mongoid-omniauth

https://github.com/RailsApps/rails3-mongoid-omniauth/wiki/Tutorial

Но, когда я закрываю сеанс браузера истекает и мне нужно снова войти в систему Как сохранить сеанс для постоянных пользователей?

Любая помощь будет принята с благодарностью!

Ответы [ 3 ]

9 голосов
/ 22 февраля 2012

То, что вы хотите, не сложно, вам нужно только установить постоянный файл cookie при создании сеанса, а затем получить это значение при установке текущего пользователя.

В вашем ApplicationController просто измените ваш current_user метод на:

def current_user
  return unless cookies.signed[:permanent_user_id] || session[:user_id]
  begin
    @current_user ||= User.find(cookies.signed[:permanent_user_id] || session[:user_id])
  rescue Mongoid::Errors::DocumentNotFound
    nil
  end
end

И в вашем SessionsController измените ваш create, чтобы установить cookie, если пользователь хочет:

def create
  auth = request.env["omniauth.auth"]
  user = User.where(:provider => auth['provider'], 
                    :uid => auth['uid']).first || User.create_with_omniauth(auth)
  session[:user_id] = user.id
  cookies.permanent.signed[:permanent_user_id] = user.id if user.really_wants_to_be_permanently_remembered
  redirect_to root_url, :notice => "Signed in!"
end
4 голосов
/ 11 февраля 2012

Devise предлагает эту функцию через модуль Rememberable.OmniAuth легко интегрируется с ним через (вы никогда не догадаетесь) модуль OmniAuth.Это даже упомянуто во второй ссылке, которую вы разместили!

1 голос
/ 16 февраля 2012

Пожалуйста, убедитесь, что политика cookie, используемая вашим приложением rails, имеет разумные настройки для вашего варианта использования (см. Ссылку в моем комментарии выше).Все, что я могу себе представить (зная, что я знаю, сидя там, где я сижу), - это то, что куки-файлы имеют свойства, которые неоптимальны / нежелательны в вашем контексте.

Пожалуйста, проверьте настройки файлов cookie в инструменте отладки / разработки браузера, таком как firebug, firecookie или инструменты разработки Chrome.

Извините, это все, что я могу придумать, учитывая мое знание проблемы,Не стесняйтесь связаться со мной снова, чтобы получить более подробную информацию о настройке файлов cookie и тестирования.

Мои 2 цента.

...