php-Laravel中的批量更新密码
作者:互联网
我看了很多群众派遣问题,但似乎没有一个能解决我遇到的问题.我正在处理的旧系统中存储着约350k的明文密码.我正在为Laravel 4重新设计系统,因此我需要在所有这些条目上使用Laravel的密码哈希系统.我试着做:
$users = User::where(DB::raw('length(password)'), '<', 60)->get();
foreach($users as $user)
{
$user->password = Hash::make($user->password);
$user->save();
}
哪个可行,但是要花费大量时间,我不想等待几天来更新所有这些记录. (DB是远程的,因此通信中有很多额外的滞后时间.)
我希望我可以按照以下方式做点事情:
DB::table('users')->where(DB::raw('length(password)'), '<', 60)
->update(['password'=>????]);
根据Laravel文档,这看起来像我要使用的语法,但是我不知道该如何处理????部分.
任何帮助是极大的赞赏!
-埃里克
解决方法:
您必须遍历它们-没有其他方法.您需要为每个明文密码计算一个唯一的盐化哈希.
之所以要花费“大量时间”是因为散列在计算上很昂贵.您不会注意到1-2个散列.但是您将获得350k的哈希值.
就像比特币挖矿一样-除了这次您没有得到报酬.
编辑:另外-如果用户在旧系统中的“明文”中密码长度可能大于60,则-如果您打算使用Laravel Auth系统,您仍必须将密码长度哈希到60长度-因为它将自动哈希与数据库进行比较时的密码.
标签:laravel-4,php 来源: https://codeday.me/bug/20191121/2049436.html