2 Laravel 个应用,只有一个可以登录
2 Laravel apps, only one can login
我正在创建一个网络应用程序,我需要将它部署为多个网络应用程序实例
假设我将应用程序部署为
root
|_ app1
|_ app2
|_ app3
app2
和 app3
都是通过 git 从 app1
克隆的。之后我 composer install
让他们安装..
当我登录 app1
时一切正常,但在登录 app2
后,我的 app1
登录无故退出。我的第一个结论是会话冲突,但我没有发现任何导致更改 Laravel 会话密钥的线索...所以我尝试更改应用程序密钥,但它没有做任何事情。
任何人都可以指出一些线索或答案吗?谢谢
P.S:我访问 via 子文件夹(例如:http://mydomain/app1
、http://mydomain/app2
、http://mydomain/app3
)
我尝试过的事情:
- 更改应用密钥
- 更改 session.cookie 并分配不同的名称
每个站点
编辑: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
文件夹中,创建两个新文件夹 app1
和 app2
。
无论您在其中放置什么配置文件,都将在访问相应网站时加载。
如果配置文件不存在,将加载全局默认值。
最后,无需为每个网站设置不同的应用程序文件夹,除非您想要明确区分关注点。
改变session.cookie
才是正确的解决方法!
开始在配置上创建 session.php
并为每个应用cookie
设置不同的值
<?php
return [
'cookie' => 'app1'
];
<?php
return [
'cookie' => 'app2'
];
之后清除浏览器的 COOKIE! (这个很重要!)
如果不清除,你上次的登录行为仍然会发生冲突,演出无法进行。
就是这样!
您可以有多个 Laravel 站点,它们在不同的子文件夹中相互复制。
我正在创建一个网络应用程序,我需要将它部署为多个网络应用程序实例 假设我将应用程序部署为
root
|_ app1
|_ app2
|_ app3
app2
和 app3
都是通过 git 从 app1
克隆的。之后我 composer install
让他们安装..
当我登录 app1
时一切正常,但在登录 app2
后,我的 app1
登录无故退出。我的第一个结论是会话冲突,但我没有发现任何导致更改 Laravel 会话密钥的线索...所以我尝试更改应用程序密钥,但它没有做任何事情。
任何人都可以指出一些线索或答案吗?谢谢
P.S:我访问 via 子文件夹(例如:http://mydomain/app1
、http://mydomain/app2
、http://mydomain/app3
)
我尝试过的事情:
- 更改应用密钥
- 更改 session.cookie 并分配不同的名称 每个站点
编辑: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
文件夹中,创建两个新文件夹 app1
和 app2
。
无论您在其中放置什么配置文件,都将在访问相应网站时加载。
如果配置文件不存在,将加载全局默认值。
最后,无需为每个网站设置不同的应用程序文件夹,除非您想要明确区分关注点。
改变session.cookie
才是正确的解决方法!
开始在配置上创建 session.php
并为每个应用cookie
设置不同的值
<?php
return [
'cookie' => 'app1'
];
<?php
return [
'cookie' => 'app2'
];
之后清除浏览器的 COOKIE! (这个很重要!) 如果不清除,你上次的登录行为仍然会发生冲突,演出无法进行。
就是这样! 您可以有多个 Laravel 站点,它们在不同的子文件夹中相互复制。