1

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

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

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

谢谢!

4

1 回答 1

0

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

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

我使用Clearance::Token.newRails 控制台生成一个新的remember_token,然后我手动更新了数据库,以便我需要的帐户有这个remember_token

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

如果有人想对此进行扩展并准确解释它的工作原理,请这样做。

于 2014-07-06T16:16:35.937 回答