2015-12-21 106 views
3

我有1个域名,并创建了1个来自主域名的子域名www.example.com和dev.example.com。 www.example.com是生产域,dev.example.com是开发环境。Laravel会议 - 不想共享域和子域会话

我已经克隆了来自同一个仓库的2个项目,但将它们放在不同的文件夹中。在www.example.com文件夹.env文件中,我已将域会话设置为example.com。这意味着在浏览器中,当我从www.example.com或example.com访问时,它将能够共享该域。在dev.example.com中,我设置的session_domain是dev.example.com。

现在我遇到的问题是,当我访问www.example.com时,它将生成.example.com的laravel_session域名。随着点面前,它似乎可以分享到子域。当我访问dev.example.com并使用Facebook登录时,似乎它将查找.example.com域会话,而不是在dev.example.com中创建的会话。

如果我删除www.example.com中的laravel_session即可在我的dev.example.com中使用Facebook登录,或者我清除了所有的cookies /会话,并且我也可以在我的开发人员的Facebook中登录。 example.com。

我需要做些什么才能让它不会在子分享中分享会话?如果我不想分享,可以在用户在浏览器中输入example.com和www.example.com时分享域名吗?

当它用facebook登录时碰到invalidstateException,它可以通过清除所有cookie/session来解决。但我认为要求用户自行清除Cookie浏览器是不对的。有没有解决方案?

回答

0

您只需要在dev.example.com中使用不同名称的会话cookie。

if ($_SERVER['HTTP_HOST'] === 'dev.example.com') 
{ 
    //The default session name is PHPSESSID, 
    //so if we use a different one, they don't collide. 
    session_name('DEVSESSIONID'); 
} 
session_start();