Laravel Socialite:InvalidStateException(有时)

时间:2018-01-16 15:17:16

标签: php laravel-socialite

我网站上的一些用户正在体验 一个Laravel\Socialite\Two\InvalidStateException。我已采取了对Laravel Socialite: InvalidStateException的回复中列出的步骤,但未能解决问题。只有一小部分用户似乎正在体验这一点。

我有2个fpm / nginx docker容器坐在HAProxy负载均衡器后面。

4 个答案:

答案 0 :(得分:4)

这似乎是socialite包中的无效状态问题,已在此post中解决。

您的部分用户使用其他网址(https://www.example.comhttps://example.com)访问您的网站,从而导致不匹配状态"状态"在会议中。

如果您使用的是Larvel 5.3及以上版本...在SESSION_DOMAIN=http://example.com文件中添加.env

对于其他版本,请转到config/session.php文件,然后添加您的域名。 'domain' => 'www.example.com'

立即应用更改。运行'php artisan cache:clear''composer dump-autoload'希望这可以解决问题。

答案 1 :(得分:3)

我敢打赌,由于负载均衡器,问题出现了。这是我的理论:

  1. 粘性会话:如果您的负载均衡器没有正确配置粘性会话,某些用户可能会在服务器1上启动新会话,并且在服务器上的后续请求中结束2可能会抛出Laravel\Socialite\Two\InvalidStateException

  2. 请求超时:我不确定这一点,但也许您的会话生命周期不足以完成一些同时抛出Laravel\Socialite\Two\InvalidStateException

    的进程
  3. 也许如果您将laravel会话存储更改为分散数据库而不是默认文本文件配置,则异常会得到解决。

答案 2 :(得分:0)

在生产环境文件中,只需添加SESSION_DOMAIN = http://example.com即可由config / session.php获取。对于本地开发,您将不​​需要它。

答案 3 :(得分:0)

替换

Socialite::driver('google')->user();

此代码

Socialite::driver('google')->stateless()->user();

任何社交