Laravel Auth :: guard ('admin') -> user () возвращает ноль в другом контроллере - PullRequest
0 голосов
/ 18 марта 2020

У меня два контроллера,

Родительский контроллер без Route!

class MainController extends Controller
{
    public $data;

    public function __construct()
    {
        $this->data = Auth::guard('admin')->user();
    }
}

и Child Controller с Route!

class AdminController extends MainController
{
    public function __construct()
    {
        parent::__construct();

        dd($this->data); // Null

        dd(Auth::guard('admin')->user()); // Work
    }
}

в родительском контроллере Auth возвращает ноль, но в дочернем контроллере это работает отлично

пожалуйста, помогите мне, как я могу это исправить?

я хочу передать данные аутентификации из родительского контроллера

1 Ответ

0 голосов
/ 18 марта 2020

Вы не можете получить доступ к аутентифицированному пользователю в конструкторе вашего контроллера, потому что промежуточное ПО еще не запущено.

Я бы порекомендовал использовать черту

protected $currentUser;

public function __construct()
{
    $this->middleware(function($request, $next) {
        $this->currentUser = Auth::user();
        return $next($request);
    });
}

public function auth_check()
{
    return ! is_null($this->currentUser);
}

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

если у вас есть еще __constructor внутри вашего контроллера, вы можете использовать псевдоним конструктора признаков

class AdminController extends Controller {

   use Helper {
      Helper::__construct as private __helperConstructor;
   }

   private $example;

   public function __construct($example)
   {
       $this->example = $example;
       $this->__helperConstructor();
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...