Php 哈希密码不匹配-Laravel

Php 哈希密码不匹配-Laravel,php,laravel,hash,Php,Laravel,Hash,我使用的是Laravel 4,我的数据库表/页面是使用旧版本的Laravel创建的。版本3。我相信 我有一个用户登录系统,当将哈希密码从视图传递到控制器时,它与数据库的密码根本不匹配 我的哈希代码是: 数据库 $08$wqCWqMgG7SRIukdyNEbXX.kK5c.8BxqzGVJSaCC55eKndFjqrJqJG 形式 $2y$10$hJQsF7.KkuXw4GYb8vk1o.SZhdocP7e8SxcjvBWjtLzpJPBlX0f5q 我的Laravel控制器代码为: public

我使用的是Laravel 4,我的数据库表/页面是使用旧版本的Laravel创建的。版本3。我相信

我有一个用户登录系统,当将哈希密码从视图传递到控制器时,它与数据库的密码根本不匹配

我的哈希代码是:

数据库

$08$wqCWqMgG7SRIukdyNEbXX.kK5c.8BxqzGVJSaCC55eKndFjqrJqJG

形式

$2y$10$hJQsF7.KkuXw4GYb8vk1o.SZhdocP7e8SxcjvBWjtLzpJPBlX0f5q

我的Laravel控制器代码为:

public function postLogin()
    {

        $email = Input::get('email');
        $password = Hash::make(Input::get('Password'));

        dd($password);

        $credentials = array(
            'user_email' => Input::get('UserName'),
            'user_password' => Input::get('Password')
        );

        if(Auth::attempt($credentials))
        {
            return Redirect::to('dashboard')->with('message', 'You are now logged in!');
        }
        else
        {
            return Redirect::to('users/login')
                           ->with('message', 'Your username/password combination was incorrect')
                           ->withInput();
        }
    }
是不是因为数据库的旧版本不匹配?关于我可以检查/更改哪些内容以匹配的任何建议


欢呼声

当你这样比较时,哈希值不会“匹配”。所有散列中都添加了一种盐

问题很可能是您的数据库列名的密码。如果它是用户密码-那么你必须在你的用户模型中设置它,否则它将不起作用,否则Lavel将假定它是密码

因此,$凭据必须使用密码字段,而不是用户密码

如果您的用户数据库在名为“password”的列中有密码。那你就不需要再做什么了。但是,如果您的列名为“user_password”,则您必须修改您的用户模型,并为此添加/修改以下函数:

现在,在User model app/models/User.php文件中,您需要添加以下函数:

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

当您这样比较哈希值时,它们不会“匹配”。所有散列中都添加了一种盐

问题很可能是您的数据库列名的密码。如果它是用户密码-那么你必须在你的用户模型中设置它,否则它将不起作用,否则Lavel将假定它是密码

因此,$凭据必须使用密码字段,而不是用户密码

如果您的用户数据库在名为“password”的列中有密码。那你就不需要再做什么了。但是,如果您的列名为“user_password”,则您必须修改您的用户模型,并为此添加/修改以下函数:

现在,在User model app/models/User.php文件中,您需要添加以下函数:

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

相同秘密的新哈希每次都会不同,因为哈希时添加了随机盐。要根据哈希使用检查机密,请执行以下操作:

Hash::check('secret', 'hash-of-secret');
Auth::Attention失败的原因是传递的凭据始终需要有密码密钥。即使您的DB字段有不同的名称

$credentials = array(
    'user_email' => Input::get('UserName'),
    'password' => Input::get('Password')
);
然后确保您的用户模型实现了以下方法:

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

相同秘密的新哈希每次都会不同,因为哈希时添加了随机盐。要根据哈希使用检查机密,请执行以下操作:

Hash::check('secret', 'hash-of-secret');
Auth::Attention失败的原因是传递的凭据始终需要有密码密钥。即使您的DB字段有不同的名称

$credentials = array(
    'user_email' => Input::get('UserName'),
    'password' => Input::get('Password')
);
然后确保您的用户模型实现了以下方法:

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

哇,看起来我们同时写了几乎相同的答案;哇,看起来我们同时写了几乎相同的答案;很好,我让用户_密码切换到“password”完成了这项工作。非常感谢。很好,我让用户_密码切换到“password”完成了这项工作。非常感谢。