Laravel软件包中的路线

时间:2019-04-06 16:49:57

标签: php laravel composer-php

我在访问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模型,或者是否被禁用或加载顺序有问题?

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题,如果您在软件包中使用了要求auth的路由,则需要包括web中间件。如果您不包括web中间件,则说明您没有加载主框架将要加载的某些功能,例如会话。

如果您没有会话,那么显然您将无法检索已登录的用户。

因此,要使其正常工作,请将代码更改为

Route::get('/home', function () {
    $user = \App\User::find(1);
    dd($user);
})->middleware(['web]);