【发布时间】:2020-01-13 22:46:00
【问题描述】:
我的应用程序中有两个不同的用户对象,一个 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 中的错误还是我做错了什么?
【问题讨论】: