Rails authlogic密码哈希算法仅使用ruby
有没有人知道如何在不使用rails的情况下通过authlogic hasing算法运行纯文本密码? 看起来authlogic的默认值是sha512。
我有一个纯文本密码数据库(是的,我知道……很糟糕),需要将它们导入到使用authlogic设置的新数据库中。
这个ruby脚本在rails之外,所以我不想使用基于rails的authlogic命令。
我有
要求’authlogic’
在ruby脚本中
我是ruby模块的新手,但试图调用密码方法,如:
Authlogic :: ActsAsAuthentic:密码::方法:: InstanceMethods.password( ‘password_here’)
我从中得到了“无密码方法”错误,但在authlogic代码中的模块堆栈下面有一个“密码”方法。
谢谢!
我不会尝试直接导入它们,因为记住你可能也需要创建“盐”。 您应该为每个当前的用户创建一个全新的“用户”:
User.create({:username => username, :email => email, :password => password, :password_confirmation => password })
那样你就会知道它正在按照authlogic的意图去做。 只要您的用户模型使用authlogic,它就会使用authlogic的方法来保存密码。
你可以使用
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
请注意上面的答案:确保使用脚本/控制台,然后:
load 'ruby_script.rb'
运行它。 我试图让这个与irb一起工作,当然这不起作用。