我的域中有同一个Laravel应用程序的两个***独立***副本,在独占使用时,每个副本的行为都符合预期:
app1.mydomain.com
app2.mydomain.com
它们在各自的.env
文件中有不同的APP_NAME
值。我希望这两个变量是完全独立的(因此所有的rational env变量都被设置为唯一的,例如:APP_KEY
s、APP_NAME
s、APP_URL
s等)。虽然指定了两个不同的数据库(当然是在同一台主机上),但我在这两个数据库上设置了相同的“用户”。
问题是,有时当它们一起使用时(有点并发),当我已经通过“用户”凭据登录到其中一个时,会出现419
错误,而试图通过不同但相同的“用户”凭据登录到另一个!而用户已经登录到另一个假定独立的子域。我尝试了SESSION_COOKIE
和SESSION_DOMAIN
环境变量,但没有效果。
通过设置SESSION_DOMAIN
s分别为app1.mydomain.com
和app2.mydomain.com
;您可以成功登录其中一个;但尝试登录另一个会显示错误页419!此外,在浏览器中会话的域条目前面设置了一个点,例如:.app1.mydomain.com
(而当您省略SESSION_DOMAIN
时,显示的值不带前导点。)
我注意到app1_session
的会话也会出现在app2.mydomain.com
的浏览器cookie中(有时laravel_session
的会话也会出现!只要系统没有读取APP_NAME
的环境变量,laravel
就会被默认字符串替代!)
那么,出了什么问题,我该怎么解决?!
3条答案
按热度按时间f87krz0w1#
假设您正在设置指向每个独立子域的每个
.env
文件。您可能需要的功能是将same_site
值设置为strict
。这将确保只接受来自定义域的Cookie。
顺便说一句,一旦你改变了它,它就是一个
php artisan config:clear
。8ftvxx2r2#
我认为这不是一个问题,对您的任何子域可能.我认为你在那里 checkout 两个网站在同一个浏览器示例,为什么这个问题正在发生尝试使用一个正常的浏览器模式&打开另一个在私人模式(或)隐姓埋名模式...它可能会对您的情况下工作...
如果它不适合你实现一个Laravel会话表,这样你就可以跟踪有当前会话的登录用户的会话id,我希望它适合你
7cwmlq893#
同样的问题也发生在我身上,通过在每个项目中为
SESSION_COOKIE=
设置不同的值来修复。env