ruby-on-rails - 浏览器和登录到我的 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 应用程序,所以我知道它不是浏览器,只是我编码不正确。
解决方案
推荐阅读
- javascript - 当我使用交换功能时,为什么我的文本阴影没有关闭?
- cucumber - Serenity-Cucumber,如何跨多个特征文件使用相同的场景步骤
- forms - 使用焦点和 jquery 以忍者形式定位输入字段
- javascript - 使用 angular6 从对象中删除子对象
- rust - 你如何在 Substrate 特定类型和 Rust 原始类型之间进行转换?
- python - 如果我想获取本网站上表格的内容(网络抓取),应该读取哪些 HTML 标记
- postgresql - 如何为给定的开始日期和结束日期分配支付期间编号
- sql-server - 如何在存储过程中的 SSIS 步骤上设置项目参数
- matlab - 如何在 loglog 函数中设置不同颜色的线条?
- php - 如何从 db 中检索数据并将其显示在 php 中的两个或多个表中?