我的项目有以下四个子域:
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.时,会话会跨子域共享。
如何跨子域共享会话,但如何将它们分组,如下所示:
domain => [
['www.mysite.com', 'my.mysite.com'],
['www.mysite.com', 'company.mysite.com'],
['www.mysite.com', 'admin.mysite.com'],
]发布于 2018-03-12 11:59:30
会话是共享的,因为它本质上是相同的应用程序,您可能使用的是driver = file或database。
要解决这个问题,每个子域可以有多个会话表。
config/session.php文件并确保您使用的是database驱动程序。sessions表的多个副本,称为company_sessions、admin_sessions等。config/session.php文件),以便会话table基于子域。例如,创建一个if-else语句,查找$_SERVER['HTTP_HOST']并检查它是一个特定的子域。if ( $_SERVER['HTTP_HOST'] == 'admin.mysite.com' ) { $config['table'] = 'admin_sessions'; }您的config/session.php的布局可能需要更改以容纳覆盖表并返回正确的值。有其他方法可以做到这一点,但这可能是最简单的。
它可能无法工作,因为您正在尝试共享会话,并且不希望所有会话同时共享。您必须在功能上妥协,只需坚持共享会话即可。
https://stackoverflow.com/questions/49232135
复制相似问题