2017-09-25 68 views
0

我正在使用Laravel 5.5。我配置了许多使用会话驱动程序的身份验证警卫。每个人都有不同的用户提供者。提供者都使用雄辩的驱动程序,但是每个提供者创建不同类型的用户,例如, App\User\StaffApp\User\Customer这是Laravel会话处理不一致的bug吗?

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

或者至少这是我的想法。

这适用于文件会话驱动程序,但使用数据库驱动程序时无法预知。数据库显示了每个子域的新会话记录,正如我所期望的那样,会话ID在登录时被刷新。虽然我检查了Auth::check(),但在一个选项卡中显示正确(即登录了一名警卫,其他人登录)。在另一个标签中,它显示了所有警卫的客人。

我尝试了这种来回(文件/数据库会话驱动程序),并且文件驱动程序始终保持一致,并且数据库驱动程序始终如一。这是一个错误?还是有什么我缺少基于会话的身份验证和子域?

+0

也许你没有网络中间件 –

回答

0

经过很多调试,我终于整理出来了。

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

我把这贴在这里作为一个警示故事!