Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 30.01.2017 21:58:02

Получение id авторизированного пользователя в ServiceProvider

Добрый вечер.

Версия Laravel: 5.3.28
Версия PHP: 7.0.9
Операционная система и её версия: Windows 7 64bit
Вендор и версия Веб-сервера: XAMPP 3.2.2


Подскажите, пож-та, как можна получить  id авторизированного пользователя в ServiceProvider?

Пробовал в файле app\Providers\AppServiceProvider.php прописал следующий код:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use View;
use Auth;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {

        dd(Auth::user()->id);

    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

На выходе получаю следующею ошибку

Whoops, looks like something went wrong.
1/1 ErrorException in AppServiceProvider.php line 20: Trying to get property of non-object

    in AppServiceProvider.php line 20
    at HandleExceptions->handleError('8', 'Trying to get property of non-object', 'C:\xampp\htdocs\test.xx\app\Providers\AppServiceProvider.php', '20', array()) in AppServiceProvider.php line 20
    at AppServiceProvider->boot()
    at call_user_func_array(array(object(AppServiceProvider), 'boot'), array()) in Container.php line 508
    at Container->call(array(object(AppServiceProvider), 'boot')) in Application.php line 769
    at Application->bootProvider(object(AppServiceProvider)) in Application.php line 752
    at Application->Illuminate\Foundation\{closure}(object(AppServiceProvider), '12')
    at array_walk(array(object(EventServiceProvider), object(RoutingServiceProvider), object(AuthServiceProvider), object(CookieServiceProvider), object(DatabaseServiceProvider), object(EncryptionServiceProvider), object(FilesystemServiceProvider), object(FoundationServiceProvider), object(NotificationServiceProvider), object(PaginationServiceProvider), object(SessionServiceProvider), object(ViewServiceProvider), object(AppServiceProvider), object(AuthServiceProvider), object(EventServiceProvider), object(RouteServiceProvider), object(HashServiceProvider)), object(Closure)) in Application.php line 753
    at Application->boot() in BootProviders.php line 17
    at BootProviders->bootstrap(object(Application)) in Application.php line 203
    at Application->bootstrapWith(array('Illuminate\Foundation\Bootstrap\DetectEnvironment', 'Illuminate\Foundation\Bootstrap\LoadConfiguration', 'Illuminate\Foundation\Bootstrap\ConfigureLogging', 'Illuminate\Foundation\Bootstrap\HandleExceptions', 'Illuminate\Foundation\Bootstrap\RegisterFacades', 'Illuminate\Foundation\Bootstrap\RegisterProviders', 'Illuminate\Foundation\Bootstrap\BootProviders')) in Kernel.php line 254
    at Kernel->bootstrap() in Kernel.php line 145
    at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 117
    at Kernel->handle(object(Request)) in index.php line 53

Не в сети

#2 30.01.2017 22:11:14

Re: Получение id авторизированного пользователя в ServiceProvider

.

Изменено Dima24 (30.01.2017 22:18:58)

Не в сети

#3 31.01.2017 07:21:13

Re: Получение id авторизированного пользователя в ServiceProvider

Auth::user() будет доступен только после того как отработает миддлварь, которая восстанавливает сессию, а потом ещё и миддлварь, которая восстанавливает пользователя из сессии. сервис провайдеры отрабатывают раньше, их предназначение – конфигурация приложения как такового – они отрабатывают даже на artisan-командах, где никаких сессий и пользователей в принципе нет

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

Auth::user() будет доступен только в контексте http-запроса, только на маршрутах в группах web.php и api.php и только внутри самого экшена, конструктор контроллера отрабатывает также – до миддлварей

Не в сети

#4 31.01.2017 09:30:36

Re: Получение id авторизированного пользователя в ServiceProvider

Спасибо огромное за оперативный ответ. Буду переделывать логику.

Не в сети

Подвал раздела