Php 使用MongoDB的Laravel身份验证
我正在尝试与拉威尔和MongoDB进行身份验证 问题出在我的控制器上。此代码不进行身份验证:Php 使用MongoDB的Laravel身份验证,php,mongodb,authentication,laravel,Php,Mongodb,Authentication,Laravel,我正在尝试与拉威尔和MongoDB进行身份验证 问题出在我的控制器上。此代码不进行身份验证: if(!Input::exists('username') or !Input::exists('password')) { App::abort(403, 'Forbidden request'); } $credentials = array( 'username' => Input::get('username', null),
if(!Input::exists('username') or !Input::exists('password')) {
App::abort(403, 'Forbidden request');
}
$credentials = array(
'username' => Input::get('username', null),
'password' => Input::get('password', null),
);
if(Auth::validate($credentials)) {
return 'Success';
} else {
return 'Failed';
}
但是这个很好用:
if(!Input::exists('username') or !Input::exists('password')) {
App::abort(403, 'Forbidden request');
}
$credentials = array(
'username' => Input::get('username', null),
'password' => Input::get('password', null),
);
$users = User::all();
$found = false;
foreach($users as $user) {
if($user->username == $credentials['username']
and Hash::check($credentials['password'], $user->password)) {
$found = true;
break;
}
}
if($found) {
return 'Success';
} else {
return 'Failed';
}
两个控制器都有相同的
用户名
和密码
。第一个总是打印失败
,但第二个会给出真实的结果。问题在于您使用的是Auth::validate
,它只检查凭据是否正确,而不会让用户登录。您需要使用Auth::trunt
进行完整登录。请参阅此处的文档。好的,请始终记住您的模型必须实现用户界面。这不是问题。无论如何,它应该会给我带来成功。我刚刚发现我的模型必须实现UserInterface。这样做解决了我的问题。无论如何,谢谢你的回复。我刚刚发现我的模型必须实现用户界面。这样做解决了我的问题。