使用Forge从同一存储库中跨多个子域共享Laravel Auth会话

时间:2018-09-18 08:34:58

标签: php laravel session authentication forge

我正在运行一个Laravel 5.7(PHP 7.1)项目,该项目根据用户角色将用户路由到不同的子域。我有以下设置:

id.domain.com =>这是登录用户并根据重定向的身份验证域。 admin.domain.com =>这是“ CMS”和管理后端。 customer.domain.com =>这是客户管理门户。

当前,domain.com主URL不是Laravel实现的一部分,而是在其他平台上运行。

所有路由都附加“网络”中间件,在应用程序中附加“身份验证”。我目前正在以数据库SESSION_DRIVER的身份运行数据库,并将SESSION_DOMAIN设置为“ .domain.com”。

当我通过Homestead运行项目时-每个子域都作为YAML文件中的不同站点,都指向相同的代码库,都提取相同的ENV文件-可以100%正确地工作。

当我登录id.domain.com时,它确定我是“管理员”,并将我重定向到admin.domain.com,并且我的身份验证状态保持不变。

生产

对于生产环境,我已将每个域的A记录设置为指向同一Linode服务器。然后,在Laravel Forge上将每个域配置为单独的站点。每个站点都来自相同的代码存储库。

我为每个站点复制了相同的ENV文件和服务器设置,并且它们都共享相同的数据库和会话表。

但是,当我登录id.domain.com时-它对我进行身份验证,将我重定向到管理域,但是该域没有我的Auth状态,因此将我重定向回ID域,并进行连续循环结束,重定向过多。

我尝试了相同的APP_KEY,不同的键,更改了SESSION_DOMAIN,APP_DOMAIN,APP_URL,但是效果相同。

我确信这只是某个地方的配置问题-因为代码库和逻辑在本地域的Homestead上可以100%完美地工作。

我已经阅读了很多有关手动传递会话,更改各种设置等的答案,但是似乎没有任何效果。

在这里的任何帮助/指导将不胜感激!

0 个答案:

没有答案