在Rails 5.2中管理会话和cookie

时间:2018-05-28 14:40:18

标签: ruby-on-rails session cookies

目前,我的Rails 5.2后端应用程序正在管理仅使用会话的API。

App::Application.config.session_store :active_record_store

在应用程序中,我只管理会话[:user_id]以了解用户何时被记录。 今天,我需要增强客户端应用程序(iOS),以便在用户登录时进行存储。 所以,我的第一个想法是改变有效期:

App::Application.config.session_store :active_record_store, expire_after: 1.day

这样可行但是为了存储session_id而创建的cookie会在每次请求时更新...所以到期日期是未定义的。

所以我决定在用户​​登录时添加一个新的cookie:

cookies[:logged_in] = { value: 1, expires: 1.day }

此Cookie未在每次请求时更新,并保留到期日期。这就是我想要的。

问题是我不知道如何一起管理自定义cookie和包含user_id的会话。 即使我存储cookie并在客户端应用程序上检查其到期日期,当客户端应用程序关闭/或浏览器关闭时,包含user_id的session_id将默认过期。如果我添加" expire_after:1.day"到会议,他们不会有相同的到期日。

所以我的问题是如何同时管理会话[:user_id]到期日期和cookie [:logged_in]到期日期?我错过了什么?

编辑:更多信息。 我希望session [:user_id]像以前一样将user_id存储在数据库中,但我希望用户被记录1年,例如...即使会话默认cookie在浏览器/客户端应用程序关闭时结束。我不希望cookie(即使是签名的)存储user_id(如果可能的话......) 所以问题是当客户端上的cookie [:logged_in]没有过期时会发生什么,但是包含user_id的会话已经过期了...如何在Rails端管理它?

0 个答案:

没有答案