首页 文章

哈希密码不匹配 - Laravel

提问于
浏览
0

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

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

我的哈希码是:

Database

$ 08 $ wqCWqMgG7SRIukdyNEbXX.kK5c.8BxqzGVJSaCC55eKndFjqrJqJG

Form

$ 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();
        }
    }

它是否与较旧版本的DB不匹配?关于我可以检查/更改匹配的任何建议 .

干杯

2 回答

  • 3

    因为在散列时添加了随机盐,所以同一秘密的新散列每次都会有所不同 . 要检查哈希使用的秘密:

    Hash::check('secret', 'hash-of-secret');
    

    Auth::attempt 失败的原因是传递的凭证始终需要 password 密钥 . (即使您的DB字段具有不同的名称)

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

    然后确保 User 模型实现此方法:

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

    当您比较它们时,哈希将不会“匹配” . 所有哈希都添加了一种盐 .

    问题很可能是密码的数据库列名 . 如果它是 user_passwords - 那么你必须在你的用户模型中设置它或它不会工作(Laravel会认为它是 password 否则)

    所以你的 $credentials 必须使用 password 字段 - 而不是 user_password

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

    如果您的用户数据库在名为'password'的列中具有密码 . 那你就不需要再做任何事了 . 但是如果您的列被称为'user_password' - 那么您必须修改 User 模型并添加/修改以下函数:

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

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

相关问题