【发布时间】:2015-04-15 15:00:07
【问题描述】:
我有一个 CI 项目,想将其数据库迁移到 Laravel 的。
唯一的问题是他们有不同的方法来散列用户密码,所以我找不到将它们从一个数据库移动到另一个数据库的方法。
我已经用谷歌搜索了答案,但我发现没有人谈论迁移密码。
提前致谢。
【问题讨论】:
标签: database codeigniter laravel migration
我有一个 CI 项目,想将其数据库迁移到 Laravel 的。
唯一的问题是他们有不同的方法来散列用户密码,所以我找不到将它们从一个数据库移动到另一个数据库的方法。
我已经用谷歌搜索了答案,但我发现没有人谈论迁移密码。
提前致谢。
【问题讨论】:
标签: database codeigniter laravel migration
我没有使用 CodeIgniter 的经验,也不知道它是如何进行密码散列的,但这是我解决问题的方法。
为了明确一点:如果您有实际密码(纯文本),您只能将密码“转换”为 Laravel 哈希。由于您不存储纯密码,因此您只有在用户登录时才拥有它,我们在某处输入密码。
因此,您必须意识到这种迁移不是在几个小时内完成的。您的所有用户都需要一些时间来输入他们的密码。
所以我要说的是,您应该在您的用户表中添加一个字段以获取 CodeIgniter 密码。我们称之为ci_password。 (或者可能您只需将旧密码列重命名为此并为 Laravel 密码创建一个新的列)。
现在每次用户登录时,首先检查数据库中是否存储了 Laravel 密码并尝试登录。如果没有存储 Laravel 哈希,请检查 ci_password。 (为此,您必须让 CodeIgniters 散列在您的 Laravel 应用程序中工作。抱歉无法帮助您)
如果ci_password 有效,则使用用户输入的密码并生成 Laravel 哈希(使用 Hash::make('secret'))。将新哈希存储在数据库中并删除(设置为NULL)ci_password。
这样,密码将被一一迁移,您无需执行任何操作。也许,在幸运的一天,所有旧的哈希都会被迁移,你可以删除这个逻辑和数据库中的列。
【讨论】: