Laravel 5:每当我编辑我的个人资料时,密码都会被更改(或空白)


Laravel 5: password gets changed (or blanked out) everytime I edit my profile

每次我编辑我的个人资料时,将password字段保留为空,就提交我的密码更改到不同的哈希值。

如果我以明文形式向数据库提交密码,并尝试编辑我的个人资料,而将密码字段保留为空,它将删除我当前的密码并将其留空。

public function update(Request $request, User $user)
{
    $user = User::where('id', '=', Auth::id())->first();
    $user->name = Input::get('name');
    $user->email = Input::get('email');
    $user->password = Hash::make(Input::get('password'));
    $user->save();
}
{!! Form::model($user, ['method' => 'PATCH', 'action' => ['ProfilesController@update', $user->id]]) !!}
<fieldset>
    <div class="control-group">
        <!-- Username -->
        <label class="control-label"  for="name">Username</label>
        <div class="controls">
            <input type="text" id="name" name="name" placeholder="" value="{{ $user->name }}" class="form-control">
            <p class="help-block">Username can contain any letters or numbers, without spaces</p>
        </div>
    </div>
    <div class="control-group">
        <!-- E-mail -->
        <label class="control-label" for="email">E-mail</label>
        <div class="controls">
            <input type="text" id="email" name="email" placeholder="" value="{{ $user->email }}" class="form-control">
            <p class="help-block">Please provide your E-mail</p>
        </div>
    </div>
    <div class="control-group">
        <!-- Password-->
        <label class="control-label" for="password">Password</label>
        <div class="controls">
            <input type="password" id="password" name="password" placeholder="" class="form-control">
            <p class="help-block">Password should be at least 4 characters</p>
        </div>
    </div>
    <div class="control-group">
        <!-- Password -->
        <label class="control-label"  for="password_confirmation">Password (Confirm)</label>
        <div class="controls">
            <input type="password" id="password_confirmation" name="password_confirmation" placeholder="" class="form-control">
            <p class="help-block">Please confirm password</p>
        </div>
    </div>
    <div class="control-group">
        <!-- Button -->
        <div class="controls">
            <button class="btn btn-success">Register</button>
        </div>
    </div>
</fieldset>
{!! Form::close() !!}

您必须检查输入字段是否为空:

if(!empty(Input::get('password')) {
    $user->password = Hash::make(Input::get('password'));
}

有关哈希函数如何工作的更多信息,请参阅此页:https://mnshankar.wordpress.com/2014/03/29/laravel-hash-make-explained/