Laravel 使用Passport密码授权和/或Guzzle时服务器冻结

Laravel 使用Passport密码授权和/或Guzzle时服务器冻结,laravel,laravel-passport,Laravel,Laravel Passport,我们正在将一个laravel网站改造成一个laravel SPA,在未来,一个使用web应用的移动应用程序,因此我们需要某种API认证。我们用的是拉威尔护照 我一直在使用Laravel5.5并遵循文档指南,但当我尝试使用postman的新登录时,服务器冻结,HTTP请求永远无法处理 经过一些调试,我发现当我使用Guzzle发布到/oauth/token路由时,它崩溃了。但当我使用邮递员访问该路线时,我没有问题 这是我的代码: public function login(Request $

我们正在将一个laravel网站改造成一个laravel SPA,在未来,一个使用web应用的移动应用程序,因此我们需要某种API认证。我们用的是拉威尔护照

我一直在使用Laravel5.5并遵循文档指南,但当我尝试使用postman的新登录时,服务器冻结,HTTP请求永远无法处理

经过一些调试,我发现当我使用Guzzle发布到/oauth/token路由时,它崩溃了。但当我使用邮递员访问该路线时,我没有问题

这是我的代码:

    public function login(Request $request){
    $http = new Client();

    var_dump(1);
    //die
    $response = $http->post('http://localhost:8000/oauth/token', [  //Con postman esta ruta funciona
            'form_params' => [
            'grant_type' => 'password',
            'client_id' => env('PASSWORD-CLIENT_ID',2),
            'client_secret' => env('PASSWORD-CLIENT_SECRET',2),
            'username' => $request->username, //parece usar correo, no nombre de usuario
            'password' => $request->password,
            'scope' => '*',
        ],
    ]);

    var_dump(2);
    //die;
    return json_decode((string) $response->getBody(), true);
}

这是Guzzle的问题还是Oauth/Passport的问题?

如果我通过CLI提供应用程序,同样的事情也会发生在我身上。我所做的是将我的开发更改为homestead或xampp virtualhost,并且成功了。

我遇到了同样的问题,在我的情况下,冻结的不是Guzzle,我还尝试了curl。问题在于,我在内置PHP Web服务器的一个实例上运行了这一切,它是单线程的

web服务器只运行一个单线程进程,因此如果请求被阻止,PHP应用程序将暂停

资料来源:


当对自身进行调用时,线程被阻塞,等待自己的回复。解决方案是将提供应用程序和使用应用程序分离到各自的实例中,或者在多线程Web服务器(如Apache或nginx)上运行它。

如果您正在寻找一个快速修复程序来测试您的更新,您可以通过打开两个命令提示来完成。第一个是运行
php artisan serve
(在本地,我的默认端口是8000,您将在
http://localhost:8000
)。第二个将运行
php artisan serve——端口8001

然后,您会将post请求更新为:

$response = $http->post('http://localhost:8001/oauth/token', [ 
        'form_params' => [
        'grant_type' => 'password',
        'client_id' => env('PASSWORD-CLIENT_ID',2),
        'client_secret' => env('PASSWORD-CLIENT_SECRET',2),
        'username' => $request->username,
        'password' => $request->password,
        'scope' => '*',
    ],
]);

在测试期间,这应该会有所帮助,直到您能够访问服务器或本地虚拟主机上的所有内容。

您是否收到任何错误响应?没有错误响应。实际上根本没有反应。我在翻拉维尔的日志,但我什么也找不到。我能想到的最好的办法是它永远不会通过Guzzle/客户端帖子。你确定你正在联系控制器吗?是的。那里的var_垃圾场证实了这一点。这就是为什么我认为Guzzle/Client有点问题,因为它从未达到var_dump(2)
Guzzle/Client
版本?遗憾的是,我一直在使用Xampp