Php 使用MongoDB的Laravel身份验证

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),

我正在尝试与拉威尔和MongoDB进行身份验证

问题出在我的控制器上。此代码不进行身份验证:

    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。这样做解决了我的问题。无论如何,谢谢你的回复。我刚刚发现我的模型必须实现用户界面。这样做解决了我的问题。