как указать более одного аутентифицированного охранника в laravel

я читаю в разделе аутентификации на веб-сайте laravel https://laravel.com/docs/5.2/authentication

Может кто-нибудь объяснить, как я могу сделать это, как объясняет документация, чтобы указать отдельные таблицы для аутентификации … Я приведу цитаты из Laravel, как показано ниже:

Доступ к определенным экземплярам охраны

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

Имя охранника передано охрана метод должен соответствовать одному из
охранники настроены в вашем auth.php конфигурационный файл:

if (Auth::guard('admin')->attempt($credentials)) {
//
}

1

Решение

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

config/auth.php

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
// add another one
// use the same driver, 'session', but a different user provider
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],

'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
// add a provider using Eloquent but using a different model
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
]

Тогда вы должны быть в состоянии указать охранника admin к Auth. Пока это Admin Модель реализует Authenticatable, и вы передаете соответствующие учетные данные attempt На Аут ты должен быть хорош.

3

Другие решения

Если у вас есть больше промежуточного программного обеспечения, и вы хотите применить более одного средства защиты, и я имею в виду промежуточное программное обеспечение, вы можете сделать это в любом файле Middleware.php:

public function handle($request, Closure $next)
{
// if a user is Agency or Admin, let him through
if (Auth::user()->isAgency() || Auth::user()->isAdmin()) {
return $next($request);
}
// else show error page
abort(403);
}
0

По вопросам рекламы [email protected]