【问题标题】:Storing sessions in rails without authentication在没有身份验证的情况下将会话存储在 Rails 中
【发布时间】:2017-03-03 13:49:08
【问题描述】:

我已经读到可以在没有用户身份验证的情况下将会话存储在 Rails 中(引用 this),但是我不确定如何在我的用户模型中进行操作。我基本上是在创建一个调查,只想存储用户的 IP 地址和 ID(我不能有任何其他可识别信息用于 IRB 目的)。用户将被另一个模型引用,我希望调查的响应归当前用户所有。提示?

【问题讨论】:

  • ID从何而来?
  • @Ruslan 我不确定。这是我的问题的一部分。我基本上想创建一个没有传统凭据的用户,所以我不确定如何生成 ID。
  • 发布实际代码 sn-ps 通常更好,因此我们有更具体的问题示例来帮助解决。问这样一个相当笼统的问题会让人很难回答,因此对网站没有帮助。请发布一些代码 sn-ps 和您需要帮助的具体问题,谢谢!

标签: ruby-on-rails angularjs


【解决方案1】:

您可以使用 securerandom 为用户生成唯一 ID

require 'securerandom'
SecureRandom.uuid

然后您可以将其存储在会话中以跟踪用户

def survey_user
  session[:survey_user] ||= SecureRandom.uuid
  SurveyUser.find_or_create_by(id: SecureRandom.uuid)           
end

所以现在当用户来做你的调查时,你在数据库中为他们建立了一个模型,并且可以与他们的答案建立关联

【讨论】:

  • 非常感谢!我以前没见过 SecureRandom,这个答案让我找到了 Rails 5 中的新 has_secure_token。
  • @knod 很高兴为您提供帮助 :)
【解决方案2】:

您实际上并不需要创建会话。它会在需要时自动创建,即当您在其中存储内容时。你应该只需要这样的东西:

session[:id]         = ...
session[:ip_address] = ...

(尽管根本不需要存储 ip 地址,因为它应该始终在 request 对象中可用)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2013-02-24
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2015-08-27
    • 2016-02-19
    相关资源
    最近更新 更多