Сеанс Rails потерян после перенаправления omniauth oauth - PullRequest
0 голосов
/ 19 февраля 2019

Мы используем сессию rails для сохранения намерения пользователя перед использованием oauth (Linkedin).Идея здесь состоит в том, чтобы показывать разные страницы после обратного вызова Linkedin.Проблема в том, что мы иногда видим потерянный сеанс после обратного вызова Linkedin, что вызывает ошибки на нашей стороне.


Это настройка сеанса Rails:

Rails.application.config.session_store 
  :cookie_store, 
  key: "_my_session_#{Rails.env}", 
  :secure => !ENV['NO_SSL'] && (Rails.env.production? || Rails.env.staging?), 
  :expire_after => 100.years

Вот как мы устанавливаем cookie перед перенаправлением на страницу аутентификации Linkedin:

def social_login
  session[:intention] = 'login'
  redirect_to_provider(params[:provider], request.query_parameters)
end

Содержимое сеанса после перенаправления:

{
  _csrf_token: nYlKmD/KAbj3hmWQ+cIethchxlHTOzUMjG/5y/fldLE=
  oauth: {"linkedin": {"callback_confirmed": true}}
  session_id: 4165617feee7f9a51148318d300291fc
}

На всякий случай: Rails 5.2.1, omiauth 1.8.1, Docker

...