【问题标题】:What is the warden data in a Rails/Devise session composed of?Rails/Devise 会话中的warden 数据由什么组成?
【发布时间】:2014-06-29 03:32:50
【问题描述】:

Rails 会话中的“数据”如下所示:

{"warden.user.user.key" => [[1], "long-random-string"]}

1 是用户 ID。什么是长随机字符串?

这是由 Rails 或 Devise 处理/使用的东西吗?

【问题讨论】:

    标签: ruby-on-rails devise warden


    【解决方案1】:

    当您登录user(设计模型名称User)时,会创建一个密钥"warden.user.model_name.key",在您的情况下为"warden.user.user.key"

    例如:

    { warden.user.user.key => [[1], "$2a$10$KItas1NKsvunK0O5w9ioWu"] }
    

    在哪里

    1 是登录用户的id

    $2a$10$KItas1NKsvunK0O5w9ioWu又名long-random-string是ID为1的用户的部分加密密码

    您可以通过继续rails console 并执行来验证这一点

    User.find(1).encrypted_password  
    ## => "$2a$10$KItas1NKsvunK0O5w9ioWuWp4wbZ4iympYMqVCRmmvTGapktKqdMe"
    

    更新

    你能告诉我更多关于这个部分加密的密码吗?为什么是部分而不是完整的?

    为了在评论中回答您的上述问题,Devise 通过调用authenticatable_salt 方法将部分encrypted_password 存储在会话中。 Devise 存储部分 encrypted_password,因为它比在会话中暴露完整的 encrypted_pa​​ssword 更可靠(即使它已加密)。这就是为什么encrypted_password 的前 30 个字符[0,29] 被提取并存储在会话中的原因。

      # A reliable way to expose the salt regardless of the implementation.
      def authenticatable_salt
        encrypted_password[0,29] if encrypted_password
      end
    

    您可以在此处查看 authenticatable_salt 的代码。

    在哪里/何时使用?它被 Devise 使用,还是被 Rails 使用,或者两者都使用?

    Devise 使用它进行身份验证,以验证特定用户是否已登录。理想的用例是,特定 Rails 应用程序如何在新页面时跟踪用户的登录方式被要求。由于 HTTP 请求是无状态的,因此无法判断给定请求实际上来自登录的特定用户?这就是为什么会话很重要,因为它们允许应用程序跟踪登录用户从一个请求到另一个请求,直到会话过期。

    【讨论】:

    • 谢谢!你能告诉我更多关于这个部分加密的密码吗?为什么它是部分而不是完整的?它在哪里/何时使用?它被 Devise 使用,还是被 Rails 使用,或者两者都使用?
    • (或者随时引导我到某个地方阅读此内容——但我在任何地方都找不到好的解释器)
    • @JohnBachir 请阅读我更新的答案。希望能帮助你理解。
    • 史诗般的答案——谢谢!积分!我仍然有点不清楚目的是什么,但现在我很容易自己探索它。 (我不明白这与盐有什么关系。盐通常是与用户一起存储的字符串,用于执行单向哈希并使被盗的哈希对猜测明文密码无用)。
    • jonathanleighton.com/articles/2013/… 有一些关于在更改密码时用于使现有会话无效的盐的额外见解:新密码的盐将不同于存储在会话中的盐,因此会话是被拒绝。有关字符串内容的更多信息,请访问stackoverflow.com/a/6833165/395180
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多