我遇到了auth:attempt方法总是返回假值的问题。
我的Db条目是:
- username: admin
- 密码:2 y 10美元美元jXkNy3WC2wqu0jmaqOfDiOgDnBV89uyvJPcNSU8xOnmO3w9RjT53S
注意:我是在回显Hash::make('admin')的输出后手动存储密码的。
验证代码为:
// create our user data for the authentication
$userdata = array(
'username' => Input::get('username'),
'password' => Input::get('password'),
'agencyactive' => 1
);
if (Auth::attempt($userdata))
{
echo 'SUCCESS!';exit;
}
else
{
echo "<br>Login error";exit;
}
总是打印"Login Error"
为了排除故障,我记录了SQL查询,它检索了正确的记录,
select * from `agencies` where `username` = 'admin' and `agencyactive` = 1 limit 1
令人惊讶的是,当我像下面这样验证比较时,它打印了MATCHES
if ('Hash::check('admin', '$2y$10$jXkNy3WC2wqu0jmaqOfDiOgDnBV89uyvJPcNSU8xOnmO3w9RjT53S'))
{
// The passwords match...
echo "MATCHES";
}
else
{
echo "NO Match";
}
我不知道这里出了什么问题??
您是否有其他模型代替默认用户。
可以在config/auth.php中修改:
'model' => 'MyApp'Models'Agency',
例如感谢您的回复。
我发现,由于我使用的是'agencies'表(而不是用户),模型Agency需要实现某些方法,如
public function getAuthPassword()
{
return $this->password;
}