首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel多个交叉子域会话共享

问Laravel多个交叉子域会话共享
EN

Stack Overflow用户
提问于 2018-03-12 09:44:07
回答 1查看 1K关注 0票数 1

我的项目有以下四个子域:

www.mysite.com -公共网站,已出版的pages等。

my.mysite.com -普通用户登录此域以创建pages和其他内容

company.mysite.com - Company hasMany Employees登录到此子域以管理其pages和其他内容。

站点日志的admin.mysite.com -Admin在这里管理所有内容

--

通常,我想保持所有四个子域分开。因此,登录到my.的用户不应该能够查看company.,除非他们也登录了他们的。通过创建以下中间件,我成功地做到了这一点:

auth:my

auth:company

auth:admin

使用以上所述,对于不同类型的用户,我有不同的登录视图/路径等。

--

我需要一种跨子域共享会话的方法,因为当用户在my.上创建一个my.时,他们可以发布它,并且它显示在公共www. (www.mysite.com/my-page)上。

我需要的是当User拥有Page并登录到my.时,访问他们自己在www.子域上的页面,显示一个Edit按钮。

我通过在子域中共享会话来做到这一点,我做了以下更改:

config/session.php

domain => env('SESSION_DOMAIN', '.mysite.com')

--

但是,这会给company.和admin.的登录带来混乱,因为当User登录到my.时,会话会跨子域共享。

如何跨子域共享会话,但如何将它们分组,如下所示:

代码语言:javascript
复制
domain => [
    ['www.mysite.com', 'my.mysite.com'], 
    ['www.mysite.com', 'company.mysite.com'], 
    ['www.mysite.com', 'admin.mysite.com'], 
]
EN

回答 1

Stack Overflow用户

发布于 2018-03-12 11:59:30

会话是共享的,因为它本质上是相同的应用程序,您可能使用的是driver = file或database。

要解决这个问题,每个子域可以有多个会话表。

  1. 更改config/session.php文件并确保您使用的是database驱动程序。
  2. 创建sessions表的多个副本,称为company_sessions、admin_sessions等。
  3. 更新您的代码(即config/session.php文件),以便会话table基于子域。例如,创建一个if-else语句,查找$_SERVER['HTTP_HOST']并检查它是一个特定的子域。if ( $_SERVER['HTTP_HOST'] == 'admin.mysite.com' ) { $config['table'] = 'admin_sessions'; }您的config/session.php的布局可能需要更改以容纳覆盖表并返回正确的值。
  4. 看看能不能用!

有其他方法可以做到这一点,但这可能是最简单的。

它可能无法工作,因为您正在尝试共享会话,并且不希望所有会话同时共享。您必须在功能上妥协,只需坚持共享会话即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49232135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档