如何在Laravel 5中重新生成APP_KEY并设置新密码

时间:2015-07-27 11:23:07

标签: php laravel laravel-5 environment-variables

今天我恢复了我的Macbook OS优胜美地,我忘了备份我的.env文件,因此我丢失了APP_KEY

现在我的所有口号都不再适用了,我明白了。所以我这样做:

php artisan key:generate

然后我使用以下代码更新所有密码:

Route::get('/', function () {
    $users = new Project\DB\User;
    $users->update(['password' => Hash::make('newPasswordHere')]);
});

但是当我尝试使用系统更新用户并更改密码时,我无法登录。这是update($id)方法的代码:

$user = User::getById($id);

$user->role_id = $request->get('role_id');
$user->first_name = $request->get('first_name');
$user->last_name = $request->get('last_name');
$user->email = $request->get('email');

if ($request->has('password')) {
    $user->password = Hash::make($request->get('password'));
}

$user->active = $request->get('active');
$user->update();

我做错了什么?

我的设置

  • Macbook Pro - Yosemite
  • PHP-FPM - PHP 5.6.11 (cli) (built: Jul 19 2015 15:15:07)
  • Nginx - nginx version: nginx/1.8.0

如果您需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

我不相信这是问题,但我必须告诉他们真正的原因和解决方案:

在项目开始时,我设置了一个改变为密码属性。

这个mutator反过来已经加密了密码(是的......我知道,我不相信我没有看到它)。

public function setPasswordAttribute($value)
{
    $this->attributes['password'] = bcrypt($value);
}

最后,问题的解决方案是不加密控制器上的密码:

if ($request->has('password')) {
    $user->password = $request->get('password');
}

抱歉,谢谢你的时间!