我在这样的域上放置了一个Laravel 5.2应用程序:https://www.example.com
。
laravel_session
cookie配置为使用点表示法(包括子域名):
配置/ session.php文件:
'cookie' => 'laravel_session',
'path' => '/',
'domain' => env('SESSION_COOKIE_DOMAIN', null)
服务器上的.env 文件:
SESSION_COOKIE_DOMAIN=.example.com
我使用数据库作为会话驱动程序。
现在,有些会话cookie被复制,在cookie列表中我可以看到这样的条目:
laravel_session
,域名:.example.com
laravel_session
,域名:.www.example.com
当用户使用Facebook进行身份验证时,Facebook会话cookie也会发生同样的事情:
fbm_123456
,域名:.example.com
fbm_123456
,域名:.www.example.com
在这两种情况下,重复的Cookie的到期日期都不同
此Cookie重复会导致身份验证问题 - 某些用户尝试登录,但会重定向回主页,并且auth状态保持不变。
我似乎无法重现这个问题,或者更确切地说是什么造成了这个问题。不过,我认为它可能与Laravel会话过期相关联,或者通过remember-me令牌登录用户。
有没有人知道为什么要复制cookie?
更新
实际上,我现在意识到我们的另一个Laravel项目和这个项目之间的唯一区别是,我们在这里明确地设置了laravel_session
域(到.example.com
)。可能是领导。
答案 0 :(得分:0)
对于有类似问题的人:在我们意识到我们可以自己,每个(子)域指定会话cookie名称后,我们实际上很容易解决了这个问题。
所以,我们调整了 config / session.php cookie
键:
'cookie' => env('SESSION_COOKIE_NAME', 'laravel_session')
然后我们在相应的 .env 文件中设置SESSION_COOKIE_NAME
变量,如下所示:
# subdomainA.example.com
SESSION_COOKIE_NAME=subdomainA_session
或
# subdomainB.example.com
SESSION_COOKIE_NAME=subdomainB_session
等
希望这有帮助。
答案 1 :(得分:0)
登录后我们重新生成了会话,问题得以解决。
session()->regenerate();