【问题标题】:Password migration from laravel 5.0 to laravel 5.6从 laravel 5.0 到 laravel 5.6 的密码迁移
【发布时间】:2018-10-02 00:47:38
【问题描述】:

我正在尝试将数据库从 Laravel 5.0 迁移到 Laravel 5.6,但是当我传输 users 表时,password 列没有像以前那样通过(我假设 Laravel 再次对此进行哈希处理)

之前:- $2y$10$KPCJK7wZ5lHdFMw7y3fchO3qXBvEuqS8wXzvH6vanETH5Pe7CBWVG
之后:- $2y$10$B7hp5fGX6amcb.CBAnf8TeDxNAxwh5YAxOomi.AEsKfcdf7ovkxTy

我需要一些方法来防止 Laravel 对密码进行哈希处理。我这样做是为了迁移我的用户表:

$user = new User;
$user->password = $request['password'];
$user->save();

我之前使用过User::create(),但遇到了同样的问题。

我真的很困惑和卡住,任何关于这方面的建议都会很有帮助。

【问题讨论】:

  • 所以密码已经被散列并且在迁移时被重新散列?您可能需要使用原始的 DB::table("users")->insert() 语句来防止 User 模型进行散列。我不确定你是否可以禁用散列(我认为你可以),但这将是一个后备。
  • 是的,Tim 成功了.. Thaanks 帮忙了..你可以把它作为答案,我会支持它并将其标记为已接受

标签: php laravel laravel-5


【解决方案1】:

听起来User 模型会自动对传入password 的任何值进行散列,无论它是否已经散列。我不确定是否有直接的方法来禁用此行为(可能是,但不确定 User 是什么 - Basic Laravel Auth、Sentinel、Spatie 等),因此解决方法是使用 DB绕过User 模型的外观:

DB::table("users")->insert([
  "password" => $request->input("password"), // or $request["password"]
  ...
]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 2019-02-25
    • 2016-07-22
    • 1970-01-01
    • 2019-05-17
    • 2021-02-18
    • 1970-01-01
    相关资源
    最近更新 更多