0

我有 2 个应用程序,它们都使用 Laravel oauth 安全性。这些应用程序通过 restAPI 进行通信当我通过邮递员请求 oauth 令牌时,它工作正常,但是当我使用第一个应用程序的(Guzzle)http 帖子尝试它时,它无法对用户进行身份验证。他们都应该使用不同的数据库,但是当我切换到 mysql 时,错误消息指出它无法连接到第一个应用程序的数据库。这里出了什么问题?

 protected function getAccessTokenMerchant()
{
    $client = new Client();
    $response = $client->POST("http://localhost/xxx/public/" . 'oauth/token', [
            'headers' => [
                'Accept' => 'application/json',
                'Content' => 'application/json'
            ],
            'json' => [
                'client_id' => "2",
                'client_secret' => "LlJ90SqW4IPSUfQGiLQVUzKtCr1FKMirS6bBxcf1",
                'grant_type' => 'client_credentials'
            ]
        ]
    );
    return $response->getBody();
}

此代码的响应是客户端错误:POST http://localhost/xxx/oauth/token导致401 Unauthorized响应。当我使用邮递员向http://localhost/xxx/oauth/token发出请求时,我收到了令牌

{
"token_type": "Bearer",
"expires_in": 31536000,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjAyYzFmZGQwNmE4MTM0MGM5ZDQwNjI3OWI3ZGJjN2E1NzdhMmJiMjllNjZkOTIzODE0Mjg2Y2IxNmVlM2ZiYjcwZDFlZTgxNmQwNDZlOWE4In0.eyJhdWQiOiIyIiwianRpIjoiMDJjMWZkZDA2YTgxMzQwYzlkNDA2Mjc5YjdkYmM3YTU3N2EyYmIyOWU2NmQ5MjM4MTQyODZjYjE2ZWUzZmJiNzBkMWVlODE2ZDA0NmU5YTgiLCJpYXQiOjE1NzE4NDQ4NDcsIm5iZiI6MTU3MTg0NDg0NywiZXhwIjoxNjAzMzgwODQ3LCJzdWIiOiIiLCJzY29wZXMiOltdfQ.WXIOIOVcacv4Cf-V8RlrlWpuIrDu0_cnoykxSQKtwAx1JxrK8dWsZqrxQbYsVU8Nt03apVpbtOEDhn32yIF7xhRuJHuw_p1x-waOJCQ2CDzcmkiumhDcc117CYrn3jrBaEDBKEpZSuI5ZW8-VqSWXmfpc18xjxESpAWej__wT78mKYtelZg00I2M5khJTAD2XaBsjoThdK0QuID6jtlMBaoZJEHzoEj-UKpuizOwvFXwbl6Plz3L_uuQqmKz64y8hfMhgZ8Zc70rkI_iLek7D1yEXn5EsZ5BH0qKgYsIYxyZMdojL4bhT8yjgB4KujZi8tHfM6iHthAgYYJ2WlIBQJ9lCpnGuP4xWyNGmN3HQZ4K5eM7pHkZLu3eEVrl-7JixC0HgDWos25m8_HIUnXaUs-dNDDsDMO0o57JB38ao-frUgfrAU6DgjYTEslmtS0SYpE6JoPTbBn7XYADy4VCP6J67dSm-J_Qbm8GFuyX_o57v43jH4tPFxq-ccnTlfzT-E6ApFsMhYAGli713TQUct2Y3VTQFVRMuDniMMKdsZT8XN4CLGbdN6tic9jQ5W_i-XfWL9vN_RSiXHROAF-KV8nxVj0n4GgycJ9DtV0-C3Qcpyz7Zbh_WrVPW5qsr5j5rrtWXsQ7VZOBCWLAyh4YXe_HSeOXqV-k202kcURZ0UQ"}

当我关闭 mySql 服务器时,getAccessTokenMerchant() 函数返回以下错误:未知数据库 'first_application_db' (SQL: select * from client_credentialswhere code= EWALLET limit 1) 这是不正确的。它应该检查 second_application_db 而不是 first_application_db。知道发生了什么吗?

4

1 回答 1

0

我发现了问题。我的第二个应用程序以某种方式使用客户端的数据库连接(第一个应用程序的数据库),这就是它无法验证 oauth 令牌的原因。我通过运行来解决php artisan config:cache,现在它可以工作了

于 2019-10-24T01:39:36.267 回答