Laravel 5.0::Can';更改密码后无法登录


Laravel 5.0:: Can't log in after changing password

我是Laravel的绝对初学者。我目前正在使用Laravel5.0

我在通过默认的密码重置页面更新密码后登录时遇到问题。

一切都应该按照我的方式进行。重置密码后,我看到数据库上的密码更新了;电子邮件和重置密码的链接被发送到指定的电子邮件地址。但是,我无法使用刚刚更新的新密码登录。

如果有人遇到过这种问题,你能告诉我一些建议吗?

英语不是我的第一语言,所以如果这个问题对你来说没有意义或需要更多信息,请留下你的评论!任何建议都将不胜感激!提前感谢!

Route.php

// Password reset link request routes...
Route::get('password/email', 'Auth'PasswordController@getEmail');
Route::post('password/email', 'Auth'PasswordController@postEmail');
// Password reset routes...
Route::get('password/reset/{token}', 'Auth'PasswordController@getReset');
Route::post('password/reset', 'Auth'PasswordController@postReset');

PasswordController.php

<?php namespace App'Http'Controllers'Auth;
 use App'Http'Controllers'Controller;
 use Illuminate'Contracts'Auth'Guard;
 use Illuminate'Contracts'Auth'PasswordBroker;
 use Illuminate'Foundation'Auth'ResetsPasswords;
class PasswordController extends Controller {
    use ResetsPasswords;
    public function __construct(Guard $auth, PasswordBroker $passwords)
    {
        $this->auth = $auth;
        $this->passwords = $passwords;
        $this->middleware('guest');
     }
 }

我一直在寻找答案,没有找到解决方案,但后来我不得不这样解决它。

你的密码从你的用户模型中被散列了两次,当你重置密码时,请注释其中一个。

在ResetsPassword.php文件中,我删除了哈希,但在我的用户模型中保留了bcrypt,它开始工作得很好

 protected function resetPassword($user, $password)
{
   // $user->password = Hash::make($password);
    $user->password = $password;
    $user->setRememberToken(Str::random(60));
    $user->save();
    event(new PasswordReset($user));
    $this->guard()->login($user);
}

//用户模型

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

同样的事情也发生在我身上。我在网站的私人部分有一个表格,用户可以在这里更改电子邮件、姓名和密码。

为了保存密码,而不是只在表单上执行,我添加了一个类似的变体:

/**
 * Hash password on save
 * @param $value
 */
public function setPasswordAttribute( $value ) {
    $this->attributes['password'] = bcrypt($value);
}

问题是重置密码使用了用户模型,密码get被双散列为@tptcat评论。