【问题标题】:How to set cookie with some delay or find how old is cookie in ruby如何延迟设置 cookie 或在 ruby​​ 中查找 cookie 的年龄
【发布时间】:2020-05-16 06:50:22
【问题描述】:

我设置了一个 cookie returning_user

 cookies[:returning_user] = { value: "anonymus" , expires:  (Time.current + 1.hours) }

现在我想在 cookie 早 10 分钟 的情况下执行一些操作,那么有什么方法可以找出 cookie 的年龄。

如果不是,那么如何在 10 分钟后设置该 cookie。就像在 Javascript 中一样,我可以使用 setTimeout

setTimeout(()=>{
.....setcookielogic will come here...
},10*60*1000);

我是 ruby​​ 新手,希望有人可以帮助我。

【问题讨论】:

    标签: ruby-on-rails ruby cookies


    【解决方案1】:

    当 cookie 在 HTTP 标头中发送时,它们的过期时间不会随它们一起发送,只是值。但是,如果您想知道 cookie 的设置时间,请将创建时间放入 cookie(或另一个 cookie)中。所以可能是这样的:

    > cookies[:returning_user_cookie_set_time] = {value: Time.current + 1.hours, expires: (Time.current + 1.hours)}
    

    这是有道理的,因为您正在尝试使用一段数据来维护状态……这就是 cookie 的用途。与试图通过操纵 cookie 语法来维护状态相反。

    当然,如果您使用的是 rails,您可以只将数据保留在会话中并实现相同的目标,而不会冒有人看到/操纵您的后端数据的风险。

    【讨论】:

    • 谢谢@MattPo,这对我有帮助,你能告诉我如何通过会话来做到这一点
    • 会话哈希将在对您的服务器的多次调用之间可用。因此,在您的控制器中,您可以使用 session[:returning_user_cookie_set_time] = Time.current + 1.hours 设置会话变量,然后在以后的请求中,您可以通过 expire_time = session[:returning_user_cookie_set_time] 读取它
    猜你喜欢
    • 1970-01-01
    • 2015-09-10
    • 2014-08-23
    • 2011-10-27
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多