Laravel 5.4身份验证Auth尝试返回false

时间:2017-04-28 01:54:55

标签: php authentication laravel-5.4

我知道这是一个非常通用的标题,但在阅读了所有出现的标题后,他们都没有提到我所拥有的问题。基本上,我遇到了有关使用Auth::attempt()的问题。我已经检查$credentials以确保我使用的是正确的密码,而且确实是。

这不起作用 -

public function store(Request $request)
{
    $credentials = ['email' => $request->email, 'hash' => $request->password];
    if (Auth::attempt($credentials)) {
        return redirect()->home();
    }
}

但是从DB中检索散列密码并使用它 -

if (Hash::check('password123', $hashedPassword)) {
        echo "works";
}

我有办法检查Auth::attempt的哪些部分导致无效凭据吗?

2 个答案:

答案 0 :(得分:1)

来自手册:https://laravel.com/docs/5.4/authentication#authenticating-users

请注意,您需要通过密码'而不是'哈希'。

<?php 
public function authenticate()
{
    if (Auth::attempt(['email' => $email, 'password' => $password])) {
        // Authentication passed...
        return redirect()->intended('dashboard');
    }
}

<强> 修改

请参阅之前的答案 - How to change / Custom password field name for Laravel 4 and Laravel 5 user authentication

看起来你应该继续传递密码&#39;通过Auth ::尝试,但您需要更改用户模型。

  

现在在用户模型(app / models / User.php)文件中,您需要添加   以下功能:

public function getAuthPassword() {
    return $this->hash; 
}

答案 1 :(得分:0)

  

使用此代码

$password = "test";

$hash = '$2y$10$fXJEsC0zWAR2tDrmlJgSaecbKyiEOK9GDCRKDReYM8gH2bG2mbO4e';



if (password_verify($password, $hash)) {
    echo "Success";
}
else {
    echo "Error";
}