2

我知道有很多关于这个的问题,但我似乎无法为自己找到答案。

我有一个处理登录过程的LoginControllerwithauthenticate()方法。

public function authenticate()
{
    $email = $_POST['email'];
    $password = $_POST['password'];

    if (Auth::attempt(['email' => $email, 'password' => $password])) {
        $http = new \GuzzleHttp\Client([
            'base_uri' => 'http://myapp.test'
        ]);

        $response = $http->post('oauth/token', [
            'form_params' => [
                'grant_type' => 'password',
                'client_id' => '2',
                'client_secret' => '_hashed-secret_',
                'username' => $email,
                'password' => $password,
                'scope' => ''
            ]
        ]);

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

我得到了。我已经cURL error 6: Could not resolve host: myapp.test (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)重新启动了我的服务器,但什么也没有。我已经重建了所有容器(目前正在使用laradock),但什么也没有。

奇怪的是,它只出现在第一次尝试登录时。因此,当客户端尝试登录时,出现了error,但是当客户端重新发送表单数据(F5)时,它消失了,客户端重定向到表明客户端已登录的主页。

我还重新配置了我的.env和其他配置,包括hostname(以前localhost,更改为myapp.test)但无法修复error.

任何形式的帮助将不胜感激。提前致谢。

4

1 回答 1

1

好的,我已经想通了。docker-compose.yml在文件中添加一些配置。

### PHP-FPM Container #######################################
...
extra_hosts:
  - "dockerhost:${DOCKER_HOST_IP}"
  - "myapp.test:${DOCKER_HOST_IP}"
networks:
  - frontend
  - backend
  - webserver_network
...
### NGINX Server Container ##################################
networks:
  #- frontend
  #- backend
  webserver_network:
    ipv4_address: ${WEBSERVER_IP}
  frontend:
  backend:
...
### Networks Setup ############################################
webserver_network:
  driver: "bridge"
  config:
    - subnet: "${WEBSERVER_SUBNET}"
      gateway: "${WEBSERVER_GATEWAY}"

然后,重建php-fpm容器。并得到它的作品。谢谢。

于 2018-02-23T03:25:00.470 回答