我在访问Laravel软件包路由文件中的Auth::user()
时遇到问题。
我正在为 Laravel(使用 5.8.9)创建一个软件包。包在正确添加的路由文件中有自己的路由。
我在主测试站点和包中创建了相同的路由。 我正在使用作曲家"路径"将软件包符号链接到我在 Windows 10 计算机上使用的 Homestead 上的测试站点。
路线很简单,我只是检查用户是否已登录,确实如此。
Route::get('/home', function () {
dd(Auth::check());
});
在主站点路由文件中,检查按预期返回true
。 当注释掉并允许包中的路由文件处理它时,我们得到false
的返回。
我注意到它在尝试在包上运行中间件时出现错误,经过一些调查发现包没有将用户注册为已登录。
有什么想法吗? 这是一个问题,因为我正在使用作曲家上的路径来符号链接?
编辑:好的,我已经通过创建私有存储库并导入它来排除符号链接是问题所在。 因此,它现在作为普通的导入包在供应商中,但仍然遇到相同的问题。
EDIT2:我只是尝试通过做一个简单的事情来拉取包路由文件中的用户
Route::get('/home', function () {
$user = AppUser::find(1);
dd($user);
});
并null
有谁知道是否可以访问软件包中的用户/核心 laravel 模型,或者它是否被禁用或加载顺序有问题?
我设法解决了它,如果您在软件包中使用需要auth
的路由,则需要包含web
中间件。 如果您不包含web
中间件,那么您就不会加载主框架将加载的某些功能,例如会话。
如果您没有会话,那么显然您将无法检索登录的用户。
因此,要使其正常工作,请将代码更改为
Route::get('/home', function () {
$user = AppUser::find(1);
dd($user);
})->middleware(['web']);