有没有人知道如何在不使用rails的情况下通过authlogic hasing算法运行纯文本密码?看起来authlogic的默认值是sha512。
我有一个纯文本密码数据库(是的,我知道......很糟糕),需要将它们导入到使用authlogic设置的新数据库中。
这个ruby脚本在rails之外,所以我不想使用基于rails的authlogic命令。
我有
ruby脚本中的要求'authlogic'
我是ruby模块的新手,但是尝试调用密码方法,如:
Authlogic :: ActsAsAuthentic:密码::方法:: InstanceMethods.password( 'password_here')
我从中得到了“无密码方法”错误,但在authlogic代码中的模块堆栈下面有一个“密码”方法。
谢谢!
答案 0 :(得分:3)
我不会尝试直接导入它们,因为记住你可能也需要创建“盐”。您应该为每个当前的用户创建一个全新的“用户”:
User.create({:username => username, :email => email, :password => password, :password_confirmation => password })
这样你会知道它正在按照authlogic的意图去做。只要您的用户模型使用authlogic,它就会使用authlogic的方法来保存密码。
答案 1 :(得分:1)
您可以使用
transition_from_crypto_providers
Authlogic的选项。
从文档中引用
假设您最初是加密的 你的密码与Sha1。 Sha1是 开始加入MD5的聚会 你想切换到什么东西 更强。没问题,只需指定 你的新算法和改进的算法 crypt_provider选项然后让 Authlogic知道你正在转型 来自Sha1使用此选项。 Authlogic 会照顾好一切, 包括将用户转换为 新算法。下一次 用户登录后,将被授予 使用旧算法访问和 他们的密码将被重新保存 新算法。所有新用户都会 显然使用新算法 好。
这样您就可以使用现有密码导入旧用户,并在用户登录时更新。
当然,如果您只想使用Authlogic中的加密方法,而不需要任何Rails内容,只需复制代码即可。 http://github.com/binarylogic/authlogic/blob/master/lib/authlogic/crypto_providers/sha512.rb
答案 2 :(得分:0)
注意上面的答案: 一定要使用脚本/控制台,然后:
load 'ruby_script.rb'
运行它。 我试图让这个与irb一起工作,当然这不起作用。