我的应用程序中有两个不同的用户对象,一个App\User和一个App\Admin。对于两者,我有不同的身份验证保护。
我的默认守卫是web模型守卫App\User,我也有admin模型守卫App\Admin。
例如,这段代码
$admin = factory(\App\Admin::class)->make();
\Auth::guard('admin')->login($admin);
dd([\Auth::check(), \Auth::guard('admin')->check()]);
返回
[假,真]
正如预期的那样。
但是,在我的功能测试中,我正在这样做:
$admin = factory(\App\Admin::class)->make();
$response = $this->actingAs($admin, 'admin')
->get('/admin');
dd([\Auth::check(), \Auth::guard('admin')->check()]);
由于某种原因返回
[真实,真实]
这会导致各种错误(例如,我有一个普通用户的日志中间件,并试图将管理员存储为普通用户抛出 foreign_key 异常等)。
为什么同时actingAs启用两个守卫?这是 Laravel 5.6 中的错误还是我做错了什么?
红颜莎娜