为什么laravel密码不匹配?

时间:2017-11-01 17:12:43

标签: laravel laravel-5 laravel-5.5

我尝试登录但总是失败。

这是我如何存储我的密码

'password' => bcrypt($data['password']),

在laravel LoginController中。

public function customchecker()
    {
        $credentials = [
          'username'        => Input::get('username'),
          'password'        => bcrypt(Input::get('password'))
        ];

         if (Auth()->attempt($credentials)) {
              return Redirect::to('home')->with('alert-success', 'You are now logged in.'); 

          }else{

            $errors = ['username' => ['Email and/or password invalid.']]; 

            return Redirect::back()->withErrors($errors)->withInput(Input::except('password')); 
          }

    }

我用这个测试

$credentials = [
          'username'        => Input::get('username'),
          'password'        => Input::get('password')
        ];

仍然无法正常工作,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

在凭证中你不应该加密密码,你应该只输入纯文本密码,而不是:

    $credentials = [
      'username'        => Input::get('username'),
      'password'        => bcrypt(Input::get('password'))
    ];

使用:

    $credentials = [
      'username'        => Input::get('username'),
      'password'        => Input::get('password')
    ];

它会起作用。

在幕后,这样的事情将在稍后完成:

public function validateCredentials(UserContract $user, array $credentials)
{
    $plain = $credentials['password'];

    return $this->hasher->check($plain, $user->getAuthPassword());
}

因此,您会看到以后使用普通密码来比较密码是否有效。