2 Laravel 个应用,只有一个可以登录

2 Laravel apps, only one can login

我正在创建一个网络应用程序,我需要将它部署为多个网络应用程序实例 假设我将应用程序部署为

root    
  |_ app1
  |_ app2
  |_ app3

app2app3 都是通过 git 从 app1 克隆的。之后我 composer install 让他们安装..

当我登录 app1 时一切正常,但在登录 app2 后,我的 app1 登录无故退出。我的第一个结论是会话冲突,但我没有发现任何导致更改 Laravel 会话密钥的线索...所以我尝试更改应用程序密钥,但它没有做任何事情。

任何人都可以指出一些线索或答案吗?谢谢

P.S:我访问 via 子文件夹(例如:http://mydomain/app1http://mydomain/app2http://mydomain/app3


我尝试过的事情:

编辑:changing session.cookie and assign different names to each site 是正确的解决方案

出于安全原因,您的会话将被终止,因为它们都存储在同一个 table。

基本上,您需要为每个多站点设置不同的配置。

转到app/bootstrap/start.php

替换为:

$env = $app->detectEnvironment(array(
   'local' => array('homestead'),
));

有了这个(例子):

$env = $app->detectEnvironment([
    "app1"   => ["app1.mysite.com"],
    "app2" => ["app2.mysite.com"]
]);

然后在您的 app\config 文件夹中,创建两个新文件夹 app1app2

无论您在其中放置什么配置文件,都将在访问相应网站时加载。

如果配置文件不存在,将加载全局默认值。

最后,无需为每个网站设置不同的应用程序文件夹,除非您想要明确区分关注点。

Read more about multisites

改变session.cookie才是正确的解决方法!

开始在配置上创建 session.php 并为每个应用cookie 设置不同的值

<?php
return [
    'cookie' => 'app1'
];

<?php
return [
    'cookie' => 'app2'
];

之后清除浏览器的 COOKIE! (这个很重要!) 如果不清除,你上次的登录行为仍然会发生冲突,演出无法进行。

就是这样! 您可以有多个 Laravel 站点,它们在不同的子文件夹中相互复制。