Laravel 5.8 - Auth :: user () с разными охранниками - PullRequest
0 голосов
/ 08 ноября 2019

Допустим, у меня есть следующие средства защиты:

  'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'admin' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
],

Я вхожу в свое приложение как обычный пользователь, используя защиту по умолчанию «web», и для доступа к аутентифицированному пользователю я могу использовать следующее: $user = Auth::user();

public function __construct()
{
    $this->middleware('auth');

}

public function edit()
{
    $user = Auth::user();


}

В то же время я также вхожу в то же приложение с правами администратора, что и администраторские контроллеры. У меня есть следующее промежуточное ПО, и для доступа к аутентифицированному администратору я делаю следующее:Auth::guard('admin')->user()

public function __construct()
{
    $this->middleware('auth:admin');

}

public function edit()
{
    $user = Auth::guard('admin')->user();

}

Вопрос в том, нужно ли мне каждый раз указывать охрану для доступа к администратору. Я заметил, как только я аутентифицировался в конструкторе, используя $this->middleware('auth:admin') Мне больше не нужноуказать охрану для доступа к аутентифицированному пользователю внутри других методов контроллера? Это правильное поведение

1 Ответ

0 голосов
/ 08 ноября 2019

Насколько я вижу, ваш admin охранник не делает ничего, отличного от web. Он использует тот же драйвер и тот же провайдер. Таким образом, нет абсолютно никакой разницы между Auth::user() и Auth::guard('admin')->user().

. Если вы решите внедрить пользовательский драйвер (отличный от session) для вашей admin охраны, вынеобходимо использовать Auth::guard('admin')->user() (или установить вашу охрану по умолчанию) при доступе к аутентифицированному пользователю. В противном случае Auth::user() будет искать сведения о пользователе в сеансе.

В качестве примечания: драйвер session по умолчанию кэширует экземпляр пользователя при первом извлечении, что в вашем случае происходит, когда запрос достигает значения * 1014. * промежуточное ПО. Последующие вызовы Auth::user() или Auth::guard('admin')->user() обрабатываются путем возврата пользовательского экземпляра из кэша.

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