【问题标题】:Why does Laravel passport authorize keeps loading?为什么 Laravel 护照授权一直加载?
【发布时间】:2020-04-17 03:07:27
【问题描述】:

我创建了一个基本的 laravel 护照身份验证并创建了回调和重定向以授权用户下面是我的代码

Route::get('/redirect', function () {
    $query = http_build_query([
        'client_id' => 4,
        'redirect_uri' => 'http://localhost:8000/callback',
        'response_type' => 'code',
        'scope' => '',
    ]);

    return redirect('http://localhost:8000/oauth/authorize?'.$query);
});

Route::get('/callback', function (Request $request) {
    $http = new GuzzleHttp\Client;

    $response = $http->post('http://localhost:8000/oauth/token', [
        'form_params' => [
            'grant_type' => 'authorization_code',
            'client_id' => 4,
            'client_secret' => 'MUqUFrtAx3ix84zFTxwqQXA5PQDY7SWwVFW9tCNX',
            'redirect_uri' => 'http://localhost:8000/callback',
            'code' => $request->code,
        ],
    ]);

    return json_decode((string) $response->getBody(), true);
});

我按照https://laravel.com/docs/5.4/passport 提供的步骤进行操作,但是当我单击授权按钮时,页面继续加载而没有任何响应,我必须重新启动artisan serve。可能的问题是什么?

【问题讨论】:

    标签: laravel-5.4 laravel-passport


    【解决方案1】:

    问题是在使用php artisan serve 时,它使用的是single-threaded 的PHP 服务器。

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

    你可以这样做solution:

    当调用自身时,线程阻塞等待自己的回复。解决方案是将提供应用程序和消费应用程序分离到它们自己的实例中,或者在多线程网络服务器(如 Apache 或 Nginx)上运行它。

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

    然后您将发布请求更新为:

    $response = $http->post('http://localhost:8001/oauth/token', [
        'form_params' => [
            'grant_type' => 'authorization_code',
            'client_id' => 4,
            'client_secret' => 'MUqUFrtAx3ix84zFTxwqQXA5PQDY7SWwVFW9tCNX',
            'redirect_uri' => 'http://localhost:8000/callback',
            'code' => $request->code,
        ],
    ]);
    

    这应该会在您的测试过程中有所帮助,直到您能够在服务器或本地虚拟主机上进行所有操作。

    【讨论】:

      【解决方案2】:

      在您的 /redirect 路线中,您提供 same localhost:8000 。更改您的 redirect_uricallback route 中的相同错误。

      改变你的 'redirect_uri' => 'http://localhost:8000/callback', 'redirect_uri' => 'http://localhost:8001/callback',

      注意:我在 8001 端口上运行其他项目。你可以用你的来改变它:)

      【讨论】:

        【解决方案3】:

        尝试使用XAMPP 或其他网络服务器,而不仅仅是php artisan serve

        【讨论】:

          猜你喜欢
          • 2018-09-26
          • 2017-12-22
          • 2018-02-19
          • 1970-01-01
          • 2019-02-01
          • 2017-07-27
          • 2020-03-08
          • 2018-10-10
          • 2020-04-19
          相关资源
          最近更新 更多