我的网站上一些用户遇到了Laravel\Socialite\Two\InvalidStateException
的问题。我按照Laravel Socialite: InvalidStateException中的回复所述步骤进行了尝试,但未能解决该问题。只有少数用户似乎遇到了这个问题。
我有2个fpm/nginx Docker容器,它们位于一个HAProxy负载均衡器后面。
我的网站上一些用户遇到了Laravel\Socialite\Two\InvalidStateException
的问题。我按照Laravel Socialite: InvalidStateException中的回复所述步骤进行了尝试,但未能解决该问题。只有少数用户似乎遇到了这个问题。
我有2个fpm/nginx Docker容器,它们位于一个HAProxy负载均衡器后面。
这似乎是一个无效状态问题,与socialite包相关,已经在此文章中解决。
你的一些用户使用不同的网址(https://www.example.com或https://example.com)访问您的网站,从而导致会话中“状态”不匹配。
如果您使用Larvel 5.3及以上版本,请在.env
文件中添加SESSION_DOMAIN=http://example.com
对于其他版本,请转到config/session.php
文件,并添加您的域名。'domain' => 'www.example.com'
要立即应用更改,请运行'php artisan cache:clear'
和'composer dump-autoload'
。希望这能解决问题。
粘性会话:如果您的负载均衡器没有正确配置粘性会话,则可能会导致某些用户在服务器1上启动新会话,并在后续请求结束时转到服务器2,这可能会引发 Laravel\Socialite\Two\InvalidStateException
异常。
请求超时:我不确定这点,但是也许您的会话生存时间不足以完成一些过程,而这也会抛出 Laravel\Socialite\Two\InvalidStateException
异常。
redis
实例中持久化,这个实例被 nginx/fpm
容器共享用于会话存储。这难道不会消除 Sticky Sessions 理论吗? - Ben替换
Socialite::driver('google')->user();
转换为这段代码
Socialite::driver('google')->stateless()->user();
任何社交媒体(如Facebook、GitHub等)登录
any social
是什么意思? - greybeard