我网站上的一些用户正在体验
一个Laravel\Socialite\Two\InvalidStateException
。我已采取了对Laravel Socialite: InvalidStateException的回复中列出的步骤,但未能解决问题。只有一小部分用户似乎正在体验这一点。
我有2个fpm / nginx docker容器坐在HAProxy负载均衡器后面。
答案 0 :(得分:4)
这似乎是socialite包中的无效状态问题,已在此post中解决。
您的部分用户使用其他网址(https://www.example.com或https://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上启动新会话,并且在服务器上的后续请求中结束2可能会抛出Laravel\Socialite\Two\InvalidStateException
请求超时:我不确定这一点,但也许您的会话生命周期不足以完成一些同时抛出Laravel\Socialite\Two\InvalidStateException
也许如果您将laravel会话存储更改为分散数据库而不是默认文本文件配置,则异常会得到解决。
答案 2 :(得分:0)
在生产环境文件中,只需添加SESSION_DOMAIN = http://example.com即可由config / session.php获取。对于本地开发,您将不需要它。
答案 3 :(得分:0)
替换
Socialite::driver('google')->user();
此代码
Socialite::driver('google')->stateless()->user();
任何社交