我正在使用Laravel 5.5。我已经配置了许多使用会话驱动程序的身份验证保护程序。每个人都有不同的用户提供商。提供者都使用雄辩的驱动程序,但每个都创建了不同类型的用户,例如App\User\Staff
,App\User\Customer
。
此外,我还为每个用户类型设置了子域路由,例如staff.mydomain.com
,customer.mydomain.com
。今天我很高兴地发现,如果我在一个子域登录,那么该信息不会与其他域共享(默认情况下无论如何)。这意味着我可以在一个浏览器选项卡上以工作人员身份登录,也可以在另一个浏览器选项卡上以客户身份登录。
或者至少那是我的想法。
这适用于文件会话驱动程序,但在使用数据库驱动程序时无法预测。数据库显示了每个子域的新会话记录,正如我所料,会话ID在登录时刷新。当我检查Auth::check()
时,它在一个标签中显示正确(即登录一个警卫,其他人登录)。在另一个标签中,它显示了所有警卫的客人。
我来回尝试(文件/数据库会话驱动程序),文件驱动程序始终如一,并且数据库驱动程序一直不稳定。这是一个错误吗?或者我对基于会话的身份验证和子域缺少什么?
答案 0 :(得分:0)
经过多次调试后,我终于对此进行了整理。
子域与问题无关。问题是我使用了artisan session:table
命令生成的默认会话表。它创建一个user_id
字段作为整数类型。我的用户ID是uuid。
我在这里粘贴这个作为一个警示故事!