首页 > 解决方案 > 浏览器和登录到我的 Rails 应用程序之间的会话问题不一致

问题描述

从某种意义上说,我一直在努力使我的应用程序相当“通用”。我想要做的就是像其他应用程序一样登录我的应用程序,并且能够使用任何浏览器,打开多个选项卡(无需重新登录等)。但是,我似乎无法使其始终如一地工作,并且不太确定我需要做什么。我有一个生产 URL (app.mydomain.io),为了开发,我的 localhost 文件中有一个 DNS 条目,允许我访问 app-dev.mydomain.io)。

在我的config/initializers/session_store.rb文件中,它看起来像这样:

# frozen_string_literal: true

Rails.application.config.session_store :active_record_store, key: "session_key_#{Rails.env}"

话虽如此,以下是我在使用不同网络浏览器时遇到的随机/不一致问题:

勇敢的浏览器(私人模式)

登录到我的应用程序时,我可以看到正在分配 cookie,但随后它的值再次切换然后是“您必须先登录”,就好像我的浏览器试图访问经过身份验证的页面一样,但是会话以某种方式无效。

我只能在第二次验证后才能成功登录我的应用程序。当我打开多个标签时,一切正常。它不需要我重新登录或任何东西。完美的。

所以我在使用 Brave Browser 时遇到的唯一问题是我必须提交两次身份验证才能真正验证会话。

Safari(私人模式)

使用 Safari,我总是可以只对我的应用程序进行一次身份验证。但是,我无法打开我的应用程序的多个选项卡,因为它每次都需要我登录。就像新标签或其他东西无法识别会话cookie一样。

我还应该提到我在我的 Rails 应用程序中使用 Devise 进行身份验证,所以我的一部分人也想知道这是否会在我遇到的会话问题中发挥作用,而不是它的存储方式。

关于如何解决各种浏览器之间这些不一致的会话问题的任何想法?我对任何其他应用程序都没有这个问题——Facebook、Gmail、Linkedin、Twitter 等。没有。只是我的 Rails 应用程序,所以我知道它不是浏览器,只是我编码不正确。

标签: ruby-on-railssessiondevise

解决方案


推荐阅读