拉拉维尔包中的路线



我在访问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']);

相关内容

  • 没有找到相关文章

最新更新