在 laravel 的 AppServiceProvider 中使用身份验证

Posted

技术标签:

【中文标题】在 laravel 的 AppServiceProvider 中使用身份验证【英文标题】:use authentication in a AppServiceProvider in laravel 【发布时间】:2020-03-26 05:10:19 【问题描述】:

我正在使用 Laravel 所以每个登录的用户都可以有一个购物车,所以我想在我的主刀片中访问他们的购物车,因为它在标题上并在每个页面中显示所有购物车产品

所以我在 AppServiceProvider 中使用它,但我需要检查登录它的用户是否会显示购物车

    public function boot()
    

        view()->composer('app.shop.2.layouts.master', function($view) 

          $data = \Auth::user()->cart()->get()->first()->products();
          $view->with('data', $data);
        );
    

所以在用户登录之前一切正常,但是当用户未登录时,它会给我这个错误:

在 null 上调用成员函数 cart()(查看:F:\larav-pay\payment\resources\views\app\shop\2\index.blade.php

【问题讨论】:

【参考方案1】:

您可以像这样使用Auth::check() 来检查用户是否经过身份验证:

public function boot()

    view()->composer('app.shop.2.layouts.master', function($view) 
        if (Auth::check())
            $data = \Auth::user()->cart()->get()->first()->products();
            $view->with('data', $data);
        
    );

【讨论】:

这是最好的方法吗?因为我认为我们不能在 appServiceProvider 中使用 auth Service Provider 是应用程序实例可用的地方,其中包含绑定、事件侦听器、中间件甚至路由。所以我们也可以在 AppServiceProvider 中使用 Auth。

以上是关于在 laravel 的 AppServiceProvider 中使用身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 外部的包中使用 Laravel 外观(缓存、日志、存储)

Laravel 如何在会话 Laravel 中存储额外的数据/值

Laravel - 在数据库中保存或插入图像数组 - Laravel

在 laravel 中创建一个下拉列表来选择用户角色 - laravel

Laravel:如何在 Laravel 中找到公用文件夹?

在 Mac 上安装 Laravel 会抛出 laravel,即使在设置 PATH 后也找不到