ruby-on-rails Rails会话变量工作一段时间,然后突然停止工作

agyaoht7  于 5个月前  发布在  Ruby
关注(0)|答案(1)|浏览(76)

更新确认是服务器的计时问题。已发布答案。
描述我有一个Rails应用程序,已经运行了几个月没有问题,但突然我无法登录。当这种情况发生时,它同时发生在基于容器的应用程序和本地开发人员版本上。这两个安装在VirtualBox中的同一个Ubuntu VM上运行。服务器重启会让事情再次工作一段时间。昨天离开办公室时,它工作了,但今天它不起作用。我是这些本地安装的应用程序的唯一用户。它是用于开发的。应用程序的用户还没有看到这个问题,但我想确保这不会发生在他们身上。
版本

  • Ubuntu 20.04.4 LTS
  • VirtualBox 7.0.12
  • Rails 6.1.7.6
    session_store.rb
Rails.application.config.session_store :cookie_store, expire_after: 1.hour

字符串
我用session[:user_id]存储和检索

意见

  • session controller:logs清楚地表明会话已被存储,并且变量user_id可以被检索。session.id显示对象id。当session_controller完成时-一切正常。
  • 当我重定向到主页时,会话信息消失了。没有变量,甚至session.id也是空的。
  • 将代码基更改为早期版本不起作用
  • 当问题出现在基于容器的应用程序中时,同样的问题也出现在Rails本机应用程序中。
  • 当我重新启动Linux服务器时,我可以再次登录。但过了一段时间,问题再次出现。
  • 重新启动Linux本机rails服务器没有任何效果。
  • docker-compose down和up没有效果。
  • 我曾尝试清除浏览器中的cookie,但没有效果
  • 更改浏览器没有影响
  • 我可以毫无问题地运行所有的Rails测试,它们涉及到大量的登录.
    最近的变化
  • 从windows 10升级到windows 11. hyper-v是自动安装的,但我删除了它,以避免VirtualBox被模拟。
  • VirtualBox从6.x升级到7.x
  • 几周前升级到Rails 6.1.7.6+一个捆绑更新。但是当这个问题出现时,我可以回滚到任何版本,这没有什么区别。
    可能相关
  • 我直接在容器中编辑了一些文件,以解决问题并插入一些put语句。重新启动会拾取编辑。我可以这样做3-4次,但突然容器再也看不到新的编辑,即使在重新启动后。奇怪。

对我来说,这看起来像是一个非应用程序的问题。损坏的服务器?任何其他尝试-放大的实际原因?thx。

u91tlkcl

u91tlkcl1#

这是由于Ubuntu服务器上的时间问题。

修复服务器日期/时间

service ntp start

字符串
我做了一些测试来确认,并设置在过去的时间.登录将再次开始失败.我在未来的日期测试,今天提前很多天.这实际上会工作.所以它似乎只有当服务器时间滞后于当前时间失败,可能是浏览器访问服务器的时间.

  • 我将需要监控此服务,因为它似乎不时停止。
  • 我还将尝试比较服务器时间与浏览器时间,并在日志/用户界面中显示错误,告诉时间是错误的-甚至修复它。这样可以更快地找到适当的解决方案。

相关问题