这是Laravel会话处理不一致的错误吗?



我正在使用Laravel 5.5。我已经配置了许多使用会话驱动程序的身份验证警卫。每个都有不同的用户提供商。提供商都使用雄辩的驱动程序,但每个驱动程序都创建了不同类型的用户,例如AppUserStaffAppUserCustomer

此外,我还为我的每种用户类型设置了子域路由,例如staff.mydomain.comcustomer.mydomain.com。今天,我很高兴发现,如果我在一个子域上登录,该信息将不会与其他域共享(默认情况下)。这意味着我可以在一个浏览器选项卡上登录作为工作人员,在另一个浏览器选项卡上以客户的身份登录。

或至少这就是我的想法。

这与文件会话驱动程序可以很好地工作,但是使用数据库驱动程序时是不可预测的。如我所期望的那样,数据库显示了每个子域的新会话记录,并且会话ID在登录时进行了刷新。但是,当我检查Auth::check()时,在一个选项卡中显示了正确的显示(即登录了一个警卫,而其他访客则在其他标签中)。在另一个标签中,它显示了所有警卫队的客人。

我尝试了此处(文件/数据库会话驱动程序),并且文件驱动程序始终保持一致,并且数据库驱动程序始终是片状的。这是一个错误吗?还是我缺少有关基于会话的身份验证和子订阅的东西?

在大量调试之后,我终于对此进行了整理。

子域与问题无关。问题是我使用了artisan session:table命令生成的默认会话表。它创建user_id字段作为整数类型。我的用户ID是UUID。

我将其粘贴在这里,是一个警示性的故事!

最新更新