【问题标题】:Why Auth::user() return null in routes of a custom Service Provider?为什么 Auth::user() 在自定义服务提供者的路由中返回 null?
【发布时间】:2019-08-24 00:13:24
【问题描述】:

我正在App\Services\Factures 中创建一个名为Factures 的新服务。 我创建了\App\Services\Factures\FacturesServiceProvider

public function register() {
    $this->app->bind('factures', function ($app) {
        return new Facture;
    });
}

public function boot() {
    // laod Routes
    $this->loadRoutesFrom(__DIR__ .'/Http/routes.php');

    // load Views
    $this->loadViewsFrom(__DIR__ . '/views', 'factures');
}

我注册了我的提供商,一切正常,期待 Auth::user() 在视图中返回我 nullroutes.php

如何访问自定义服务中的 Auth()?

【问题讨论】:

  • 会话中间件是否添加到您的Web中间件阵列的内核文件中?用户登录了吗?
  • 是的,来自 routes/web.php 的所有其他路由都可以正常工作,我可以访问 Auth()。仅在新服务中我无法访问 Auth()

标签: laravel authentication view routes service-provider


【解决方案1】:

这篇文章解决了我的问题:User Auth not persisting within Laravel package

我发现 Laravel 将一个名为“web”的中间件应用于默认路由/web.php 文件,并且不会将此组应用于通过服务提供商加载的外部包路由。

所以我在自定义文件中的路由应该在web中间件中:

Route::group(['middleware' => ['web']], function () {
    Route::get('testing-services', function(){
        dd(Auth::user());
        // output is valid
    });
});

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 2023-02-04
    • 2016-05-11
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    相关资源
    最近更新 更多