Laravel получает пользователя внутри промежуточного программного обеспечения контроллера - PullRequest
0 голосов
/ 05 июня 2018
function __construct() {   
     $this->middleware('auth');
        $this->middleware(function ($request, $next) {
                $this->user = \Auth::user();

        });
        echo $this->user;
        exit;
}

проблема в том, что когда я отображаю пользователя внутри функции промежуточного программного обеспечения, где я получаю пользователя, его данные печатаются нормально, это означает, что он вошел в систему, но если я выведу ту же переменную за пределы функции, это будет нулевым, но примеры показывают, что он должен быть заполнен данными, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Если вам нужен пользователь из промежуточного программного обеспечения, чтобы установить его в контроллере.Лучше сделать это проще, то же самое можно сделать и в промежуточном программном обеспечении.

public function __construct(Request $request)
{
    $this->user = $request->user();

    dd($this->user);
}

Для этого решения требуется, чтобы пользователь был загружен Auth.Это может быть нулевым в некоторый момент, и для генерации списка маршрутов в Laravel это будет вызываться с нулевым пользователем.Если это все еще не работает, я не верю, что ваш пользователь установлен или промежуточное программное обеспечение Auth было инициализировано.

0 голосов
/ 05 июня 2018

Кажется, вопрос области видимости переменной.

Поскольку вы определяете и присваиваете значение varialbe внутри функции, вы не можете получить к нему доступ извне.

Вместо этого, если вам нравитсяэто должно работать:

function __construct() {
     public $user = '';    // Declared it here,
     $this->middleware('auth');
        $this->middleware(function ($request, $next) {
                $this->user = \Auth::user()->role;    // assigned a value here,

        });
        echo $this->user;    // It will print here.
        exit;
}

Переменная $this->user будет объектом, поэтому я считаю, что эхо не будет работать.Если вы хотите проверить его значение, используйте вместо него print_r($this->user);, а если вы хотите получить к нему доступ в другой функции, тогда return $this->user it.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...