我在访问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 = \App\User::find(1);
dd($user);
});
得到null
的人是否知道是否可以访问软件包中的用户/核心laravel模型,或者是否被禁用或加载顺序有问题?
答案 0 :(得分:0)
我设法解决了这个问题,如果您在软件包中使用了要求auth
的路由,则需要包括web
中间件。如果您不包括web
中间件,则说明您没有加载主框架将要加载的某些功能,例如会话。
如果您没有会话,那么显然您将无法检索已登录的用户。
因此,要使其正常工作,请将代码更改为
Route::get('/home', function () {
$user = \App\User::find(1);
dd($user);
})->middleware(['web]);