从Rails 2.3升级到4.1后,无法登录现有的清关帐户

时间:2014-07-05 16:43:09

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-2 clearance

升级旧的Rails 2.3应用程序以使用Rails 4.到目前为止,一切运行正常,除了将Clearance升级到最新的稳定版本后,我无法再登录到现有的用户帐户。除了错误的电子邮件或密码之外没有错误。我也可以创建新帐户并登录到它们就好了,但是现有的帐户是无法访问的,如果可能的话,我不想为用户重置数百个密码。

我知道在Rails 2.3之后使用的版本中,Clearance开始使用BCrypt而不是SHA1,所以我在config.password_strategy = Clearance::PasswordStrategies::SHA1中设置/config/initializers/clearance.rb以使其使用与帐户相同的加密是用。创建的。但这还没有解决问题。

有什么建议吗?我觉得其他类型的“秘密”密钥设置在旧应用程序中的某个地方,我需要将其带到新应用程序以使登录解密起作用,但我对这种事情还不太了解

谢谢!

1 个答案:

答案 0 :(得分:0)

所以我已经让它工作了,虽然我不太明白这是如何解决这个问题的,但我想分享以防万一这会帮助别人。

/config/initializers/clearance.rb我从config.password_strategy = Clearance::PasswordStrategies::SHA1切换到config.password_strategy = Clearance::PasswordStrategies::BCryptMigrationFromSHA1

我使用Rails控制台中的Clearance::Token.new生成新的remember_token,然后手动更新数据库,以便我需要的帐户有remember_token

这两件事的组合使我能够访问以前无法访问的旧用户帐户。我计划编写一个快速脚本,该脚本将使用生成的remember_token回填所有其他现有帐户。在Clearance GitHub上有关于回填这些用户remember_tokens的多次讨论,但是当我安装新的Clearance时,运行初始化脚本并没有这样做。

如果有人想对此进行扩展并准确解释其原因,请执行此操作。