Rails / 设计:在不创建用户的情况下设置会话和 cookie?

Rails / Devise: Set session and cookies without creating a User?

我想创建会话并为该会话实例设置cookie

特别是为了将不同的匿名请求关联到浏览器(或分别关联到一台机器上的多个浏览器)并且能够符合 GDPR。

基本上不需要为此创建User模型的实例。跟踪 ActiveRecord::SessionStore.

中的会话就足够了

documentation 表示需要数据库 table 才能明显地跟踪会话。

Devise 不提供创建裸会话的可能性,对吗?

所以我不得不求助于 ActiveRecord::SessionStore::SessionActiveRecord::SessionStore 来创建裸会话... (?)

同时使用 Rails 和 Devise 会话是否可行? Rails 如上所述的匿名请求会话和登录用户的设计会话。 我没有看到这里有冲突。

如果不是因为 Devise 会话和当前请求的 Rails 会话都可以通过 session[]-Hash 获得。

我不知道,如果我创建名称冲突,当我开始使用 Rails Sessions with Devise Sessions 用于登录用户时。

这么多, 我感谢每一个答案。

冯·斯波茨

devise gem 旨在与 User 模型一起使用,并假设 table 中会有一条记录。我认为你想要的是不使用设计进行身份验证,就设计所知。

要使用 devise,你有这样的地方:

before_action :authenticate_user!

在你的控制器中。您需要简单地不将其包含在您想要跳过设计身份验证的控制器中。如果这是在基础 ApplicationController 中,那么您可以使用 skip_before_action 或仅在需要身份验证的那些控制器中使用上面的 before_action

会话由 rails 管理,而不是设计。 (实际上它是由机架层管理的。)因此使用会话哈希不会有任何问题,并且它对于会话来说是唯一的。