Laravel 要求用户表中的密码字段至少有 60 个字符。
我们的旧模式有 32 个字符,并且 prod 中的所有现有密码在加密后都是 32 个字符或更少。
将 DB 字段迁移到 60 个字符后,如果我们切换到 laravel,则无法验证旧密码。
我们绝对可以提示用户重置他们的密码,但我们必须能够首先对他们进行身份验证。这是一个问题。
我们如何处理这个?寻找一些想法。
您的旧系统和 laravel 使用不同的散列方法。
如果您的旧系统有 32 个字符,则可能是 md5 散列。
要将您的旧用户转换为 laravel 的散列,您首先必须使用他们的旧密码登录用户。登录时,您必须使用旧的散列系统(md5 或其他任何东西,以及盐,如果有的话)。用户使用旧的哈希系统成功登录后,您要求他们重置密码。现在,当您重置他们的旧密码时,请使用 Larvel 的哈希系统Hash::make()
您可以按照以下步骤操作:
password
列重命名为old_password
.old_password
用户的列是否为空。如果它不为空,那么您必须使用旧的哈希方法来验证用户。使用该old_password
列作为用户的密码。password
列中。然后删除old_password
列中的值。这样,您将在用户没有意识到的情况下为用户生成一个新的正确哈希(无需他手动重置密码)。old_password
从数据库表中删除该列。另一种方法是为所有用户生成随机密码。当他们尝试登录时,填写失败,然后他们可以使用他们的电子邮件地址重置密码。