我正在开发一个标准的用户登录系统,但这次真的很奇怪。
我从表单中获取输入,控制器应该验证。我使用Laravel的Input :: only()方法将输入保存到$ input变量中并保存所有内容,因为如果我使用var_dump($ input),它会显示一个具有I POST-ed的确切值的数组。但是当我执行Auth :: attempt($ input)时,即使数据库中存在匹配的记录,我什么也得不到。
我尝试转储查询,这就是我得到的:
string 'select * from `users` where `login` = ? limit 1' (length=47)
这就是我的方法:
public function store()
{
$input = Input::only('login', 'password');
// return $input;
if (Auth::attempt($input)) {
return View::make('pages.admin');
}
else{
return 'nope!';
}
}
我还尝试手动进行验证,将输入存储到各自的变量中并通过
选择它$user = User::where('login', '=', $login)
->where('password', '=', $password)
->firstOrFail();
我转储的查询是
'select * from `users` where `login` = ? and `password` = ? limit 1'
我不知道它有什么问题,你遇到过类似的事吗?任何帮助将不胜感激。
修改
我通过进一步解决问题来确定问题。如果我对Auth :: attempt()传递的登录名和密码进行硬编码,那么问题是,某种程度上,Auth :: attempt()不会将输入选为字符串......或类似的东西
答案 0 :(得分:0)
根据Laravel Docs Security:
if (Auth::attempt(array('email' => $email, 'password' => $password)))
{
return Redirect::intended('dashboard');
}