gpt4 book ai didi

ruby-on-rails-3 - 过期日期错误的 Rails cookie

转载 作者:行者123 更新时间:2023-12-04 05:26:25 26 4
gpt4 key购买 nike

最近我试图设置一个 cookie 以验证 Rails 3.2 应用程序中的 session 。

cookie 应该在第二天开始时过期,这样我会强制用户再次登录(强制)

首先,我将应用程序的时区更改为我希望处理的时区:

config.time_zone = 'Caracas'

之后,我按如下方式创建了 cookie:
cookies[:remember_token] = {value: user.remember_token, 
expires: 1.day.from_now.beginning_of_day}

创建 cookie 没有任何问题,但过期日期错误。在 Chromium 中,日期设置为今天晚上 19​​:30(尽管我的机器时区是根据应用程序设置的)。

当我将 cookie 的定义更改为:
cookies[:remember_token] = {value: user.remember_token, 
expires: 1.day.from_now}

如果我将 cookie 设置为从今天起仅 1 天,那么过期日期将正确设置为从现在起 24 小时。

任何想法为什么 begin_of_date 没有正确设置日期?

提前致谢

最佳答案

这取决于执行顺序。在计算一天的开始后应用时区。例如我在 UTC 时区,我可以在 rails console 中执行以下操作:

irb(main):019:0> 1.day.from_now.in_time_zone(Time.zone).beginning_of_day
=> Thu, 01 Nov 2012 00:00:00 UTC +00:00
irb(main):020:0> 1.day.from_now.beginning_of_day.in_time_zone(Time.zone)
=> Thu, 01 Nov 2012 00:00:00 UTC +00:00
irb(main):021:0> Time.zone.now.tomorrow.beginning_of_day
=> Thu, 01 Nov 2012 00:00:00 UTC +00:00
irb(main):022:0> 1.day.from_now.beginning_of_day.in_time_zone('Caracas')
=> Wed, 31 Oct 2012 19:30:00 VET -04:30
irb(main):023:0> 1.day.from_now.in_time_zone('Caracas').beginning_of_day
=> Thu, 01 Nov 2012 00:00:00 VET -04:30

因此,如果您将 cookie 计算更改为以下内容,它应该可以工作:
cookies[:remember_token] = {value: user.remember_token, 
expires: 1.day.from_now.in_time_zone(Time.zone).beginning_of_day}

关于ruby-on-rails-3 - 过期日期错误的 Rails cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13164064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com