Ren*_*eee 4 php authentication laravel
正如标题所说,Laravel的函数在以下代码部分Auth::attempt()返回true(删除了不重要的部分):
public function doLogin()
{
$validator = [..]
if ($validator->fails()) {
[..]
} else {
$userdata = array(
'username' => Input::get('username'),
'password' => Input::get('password')
);
if (Auth::attempt($userdata, true)) {
return Redirect::to('/');
} else {
return Redirect::to('login');
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我们被重定向时,我们会尝试检查用户是否确实已登录Auth::check(),并false以某种方式返回.
我们已经在Google上尝试了所有可能的解决方案,并且没有成功解决任何问题.例如,我们添加了一个,remember_token但它没有改变任何东西,虽然它证明我们Auth::attempt()做了一些事情,因为它remember_token是在数据库中设置的.
作为最后的手段,我们甚至尝试用Auth::attempt()Laravel 的方法打印一些东西./vendor/laravel/framework/src/Illuminate/Auth/Guard.php但我们没有看到任何东西,甚至没有print_r.我们试图在完整的代码库中找到其他尝试函数,但没有找到.
可能是某些关于改变User它的翻译形式的东西使它破坏了,但是那个功能Auth::attempt()也应该被打破.
看起来真的很神奇,但我们不知道是什么或如何.有没有其他人有想法?
默认情况下,Laravel假定每个表都有一个名为id的主键.
可能的解决方案是在您的模型中执行此操作:
protected $primaryKey = 'id'; //Or what ever id name do you have.
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用laravel-mongodb与自定义增量和唯一生成的id而不是MongoDB的默认_id,则可能会发生此错误.在这种情况下,解决方案不是将您的自定义ID命名为此"id",因为它会使Laravel感到困惑.但是,请将其他名称命名.