Rails / 设计:在不创建用户的情况下设置会话和 cookie?
Rails / Devise: Set session and cookies without creating a User?
我想创建会话并为该会话实例设置cookie。
特别是为了将不同的匿名请求关联到浏览器(或分别关联到一台机器上的多个浏览器)并且能够符合 GDPR。
基本上不需要为此创建User
模型的实例。跟踪 ActiveRecord::SessionStore
.
中的会话就足够了
documentation 表示需要数据库 table 才能明显地跟踪会话。
Devise 不提供创建裸会话的可能性,对吗?
所以我不得不求助于 ActiveRecord::SessionStore::Session
和 ActiveRecord::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 管理,而不是设计。 (实际上它是由机架层管理的。)因此使用会话哈希不会有任何问题,并且它对于会话来说是唯一的。
我想创建会话并为该会话实例设置cookie。
特别是为了将不同的匿名请求关联到浏览器(或分别关联到一台机器上的多个浏览器)并且能够符合 GDPR。
基本上不需要为此创建User
模型的实例。跟踪 ActiveRecord::SessionStore
.
documentation 表示需要数据库 table 才能明显地跟踪会话。
Devise 不提供创建裸会话的可能性,对吗?
所以我不得不求助于 ActiveRecord::SessionStore::Session
和 ActiveRecord::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 管理,而不是设计。 (实际上它是由机架层管理的。)因此使用会话哈希不会有任何问题,并且它对于会话来说是唯一的。