【问题标题】:Rails authlogic password hashing algorithm using ruby only仅使用 ruby​​ 的 Rails authlogic 密码哈希算法
【发布时间】:2010-02-25 01:37:41
【问题描述】:

有谁知道我如何在不使用 rails 的情况下通过 authlogic hasing 算法运行纯文本密码? authlogic 的默认值似乎是 sha512。

我有一个纯文本密码数据库(是的,我知道...不好),需要将它们导入到使用 authlogic 设置的新数据库中。

这个 ruby​​ 脚本在 rails 之外,所以我不想使用基于 rails 的 authlogic 命令。

我有

需要'authlogic'

在红宝石脚本中

我是 ruby​​ 模块的新手,但试图调用密码方法,例如:

Authlogic::ActsAsAuthentic::Password::Methods::InstanceMethods.password('password_here')

我得到一个“无密码方法”错误,但在 authlogic 代码中的模块堆栈下有一个“密码”方法。

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby authlogic


    【解决方案1】:

    我不会直接尝试直接导入它们,因为请记住,您可能还需要创建“盐”。您应该为每个当前用户创建一个全新的“用户”:

    User.create({:username => username, :email => email, :password => password, :password_confirmation => password })
    

    这样你就会知道它正在按照 authlogic 的预期方式进行操作。并且只要你的 User 模型使用 authlogic,它就会使用 authlogic 的方法来保存密码。

    【讨论】:

    • 我之前在这条路上迷路了。我在这个脚本中没有当前的用户模型(或任何模型)(这完全超出了轨道,因为我试图移动大约 60 个表)。我将如何创建一个在 Rails 之外使用 authlogic 的用户类?我试过: class User "Joe", :password => "blah"}) end 这给了我错误
    【解决方案2】:

    你可以使用

    transition_from_crypto_providers
    

    Authlogic 的选项。

    引用文档

    假设您最初是加密的 您使用 Sha1 的密码。 Sha1 是 开始用MD5入党 你想换个东西 更强。没问题,只要指定 您的新算法和改进算法 crypt_provider 选项,然后让 Authlogic 知道您正在过渡 从 Sha1 使用此选项。授权逻辑 会照顾好一切, 包括将您的用户转换为 新算法。下一次 用户登录,他们将被授予 使用旧算法访问和 他们的密码将被重新保存 新算法。所有新用户将 显然使用新算法作为 嗯。

    这样您就可以使用他们现有的密码导入旧用户,他们将在用户登录时更新。

    当然,如果你只是想使用 Authlogic 中的加密方法,根本没有任何 Rails 东西,只需从 http://github.com/binarylogic/authlogic/blob/master/lib/authlogic/crypto_providers/sha512.rb

    【讨论】:

      【解决方案3】:

      请注意上面的答案: 请务必使用脚本/控制台,然后:

      load 'ruby_script.rb'
      

      运行它。 我试图让它与 irb 一起工作,当然这不起作用。

      【讨论】:

        猜你喜欢
        • 2011-10-10
        • 1970-01-01
        • 2011-04-08
        • 2020-09-16
        • 2012-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多