我正在运行一个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%完美地工作。
我已经阅读了很多有关手动传递会话,更改各种设置等的答案,但是似乎没有任何效果。
在这里的任何帮助/指导将不胜感激!