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

时间:2015-02-03 12:51:56

标签: authentication laravel-4

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

root    
  |_ app1
  |_ app2
  |_ app3

app2 dan app3都是通过git从app1克隆的。之后我做composer install并让他们安装..

当我登录app1时一切正常,但登录app2后,我的app1登录信息已无法清除。我的第一个判决是会话冲突,但我没有发现任何改变Laravel会话密钥的行为......所以我尝试更改App Key但它没有做任何事情。

任何人都可以指点我一些领导或回答?谢谢

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


我尝试过的事情:

  • 更改应用程序密钥
  • 更改session.cookie并指定不同的名称 到每个网站

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

2 个答案:

答案 0 :(得分:1)

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

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

转到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

答案 1 :(得分:1)

更改session.cookie是正确的解决方案!

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

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

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

之后清除你的浏览器&#39; COOKIE ! (这个很重要!) 如果不清除,您的上次登录行为仍会发生冲突,并且该节目无法继续播放。

那就是它! 您可以拥有多个Laravel站点,这些站点在不同的子文件夹中彼此重复。