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