如何将CodeIgniter用户密码移动到Laravel

Ale*_*ali 1 database migration codeigniter laravel

我有一个CI项目,并希望将其数据库迁移到Laravel的数据库.

唯一的问题是他们有不同的方法来散列用户密码,因此我找不到将它们从一个数据库移动到另一个数据库的方法.

我已经用谷歌搜索了答案,但我发现没有人谈到迁移密码.

提前致谢.

luk*_*ter 6

我没有使用CodeIgniter的经验,也不知道它是如何进行密码散列的,但这就是我如何处理这个问题.

要明确一点:如果您有实际密码(纯文本格式),则只能将密码"转换"为Laravel哈希值.由于您没有存储普通密码,因此您只有在用户登录时才会输入密码.

因此,您必须意识到此迁移不会在几个小时内完成.所有用户都需要一些时间才能输入密码.

所以我得到的是你应该在你的users表中为CodeIgniter密码添加一个字段.我们称之为ci_password.(或者您可能只需将旧密码列重命名为此,并为Laravel密码创建一个新密码).

现在,每次用户登录时,首先检查Laravel密码是否存储在数据库中并尝试登录.如果没有存储Laravel哈希,请检查ci_password.(为此你必须在你的Laravel应用程序中使CodeIgniters哈希工作.抱歉无法帮助你)

如果ci_password有效则使用用户输入的密码并生成Laravel散列(使用Hash::make('secret')).将新哈希存储在数据库中并删除(设置为NULL)ci_password.

通过这种方式,密码将逐个迁移,您无需执行任何操作.也许,在幸运的一天,所有旧的哈希都将被迁移,您可以删除此逻辑和数据库中的列.