Мы используем сессию 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