Laravel 结合了 Passport 身份验证和普通身份验证

Zez*_*eds 5 laravel laravel-passport

如何结合 Passport 身份验证和普通 Laravel 身份验证?

我希望用户登录 web-middleware 和 api-middleware 的页面。登录路由在 api-middleware 中。目前我已经设置了 Passport 身份验证,它适用于所有 api-middleware 路由。如何让用户也登录到网络中间件?

编辑 #1

我在做什么:

登录代码

$http = new \GuzzleHttp\Client();

    try {
        $response = $http->post(config('services.passport.login_endpoint'), [
            'form_params' => [
                'grant_type' => 'password',
                'client_id' => config('services.passport.client_id'),
                'client_secret' => config('services.passport.client_secret'),
                'username' => $args['email'],
                'password' => $args['password']
            ]
        ]);

        $user = User::where('email', $args['email'])->first();

        Auth::guard('web')->login($user);
        return [
            "token" => $response->getBody()->getContents(),
            "user" => $user
        ];

    } // ...
Run Code Online (Sandbox Code Playgroud)

在某个网络中间件路线中的某处

return auth()->check() ? "logged in" : "not logged in";
Run Code Online (Sandbox Code Playgroud)

返回“未登录”

ge0*_*022 0

如果您需要将现有用户实例登录到您的应用程序中,您可以使用用户实例调用登录方法。

Auth::login($user);
Run Code Online (Sandbox Code Playgroud)

您还可以使用guard()方法:

Auth::guard('web')->login($user);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此处的文档:https ://laravel.com/docs/5.8/authentication#authentication-users