В этой статье мы обсудим, как использовать защиту аутентификации laravel, создав защиту для веб-приложения рекламной сети, подумайте о Adsense, Bidvertiser и т. Д. Прежде чем мы начнем обсуждать laravel guard, вам может быть интересно, когда мне понадобится laravel guard? что ж, вам нужна защита laravel при работе с приложением, которое обслуживает разные типы пользователей, или даже если вы хотите создать панель администратора для своего веб-приложения, которое проверяет подлинность пользователя.
На типичном веб-сайте рекламной сети более трех разных типов пользователей, но в нашем случае мы собираемся создать только три типа пользователей, которые; Рекламодатель: Как следует из названия, пользователь, который заходит на сайт для рекламы своих товаров и услуг. Издатель: Издателем может быть блоггер, владелец приложения, веб-мастера, которые хотят монетизировать свой контент.
Администратор: Администратор в данном случае является владельцем сети. Я предполагаю, что у вас уже готов проект laravel. Первый шаг, который мы должны предпринять, – это создать модель и миграции для рекламодателей, издателей и администратора. php artisan make:модель рекламодателя -m для создания как модели, так и файла миграции для рекламодателя. повторите то же самое для издателей, администратора, выполнив следующий код php artisan make:модель издателя -m php artisan make:модель администратора -модель
Таким образом, содержимое вашей модели рекламодателя, администратора, издателя должно выглядеть как следующий пример кода
'datetime',
];
}
Мы приближаемся к цели 🙄 , следующий шаг – добавить следующие столбцы в миграции рекламодателя, издателя и администратора, которые мы создали ранее.
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
Да, пришло время на самом деле создать нашу охрану, идите в config/auth.php файл, вы можете видеть, что весь файл возвращает мульти-массив.ищите элемент массива с ключом как “охранники”, как в приведенном ниже коде.
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
Подэлемент с ключом “web” является защитой для пользователя по умолчанию, который поставляется с laravel. теперь мы должны добавить подобный код в массив для каждого из наших собственных типов пользователей. Смотрите код ниже.
'advertiser' => [
'driver' => 'session',
'provider' => 'advertisers',
],
'publisher' => [
'driver' => 'session',
'provider' => 'publishers',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
//these codes goes in to the values of guards (same level as the "web"
прокрутите вниз, все еще находясь в config/app.php файл , вы увидите еще один ключ “поставщики”. Следующим шагом будет связать наши модели с поставщиками следующим образом, добавив приведенный ниже код к значениям ключа “поставщики”
//the keys(advertisers,publishers,admins) here are the values we gave to the provider in "guards" array above.
'advertisers' => [
'driver' => 'eloquent',
'model' => App\Advertiser::class,
],
'publishers' => [
'driver' => 'eloquent',
'model' => App\Publisher::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
Следующим шагом будет создание промежуточного программного обеспечения для каждого из наших охранников для защиты ресурсов каждого типа пользователя. Выполните следующие команды ниже, чтобы создать промежуточное программное обеспечение для каждого из наших охранников. |/php artisan make:авторизация администратора промежуточного программного обеспечения php artisan make:рекламодатель промежуточного программного обеспечения Auth php artisan make:издатель промежуточного программного обеспечения Автор
Теперь зайдите в свой каталог приложение/Http/промежуточное программное обеспечение и отредактируйте каждое промежуточное программное обеспечение, которое мы создали выше, следующим образом:
check()){
return $next($request);
}
return redirect()->route('admin.login')->withErrors([ 'Not allowed']);
//redirect here to your corresponding login page
}
}
Последний шаг, который нужно сделать сейчас, – это зарегистрировать свои промежуточные программы в app/Http/kernel.php файл со значениями массива свойств $routeMiddleware . в массиве $routeMiddleware ключ – это имя, которое мы можем использовать для вызова наших промежуточных программ в нашем маршруте.
protected $routeMiddleware = [... "advertiser.auth" =>\App\Http\Middleware\AdvertiserAuth::class, "publisher.auth" =>\App\Http\Middleware\PublisherAuth::class, "admin.auth" =>\App\Http\Middleware\AdminAuth::class, ]
Теперь мы можем использовать нашу защиту и промежуточное программное обеспечение для защиты наших маршрутов, как в примере ниже.
Route::middleware(['advertiser.auth'])->group(
function(){
//protected advertiser routes here
});
Route::middleware(['publisher.auth'])->group(
function(){
//protected publisher routes here
});
Route::middleware(['admin.auth'])->group(
function(){
//protected admin routes here
});
наконец 😹 , мы закончили , хотя можно достичь того же результата, что и выше, просто создав столбец user_type с возможными значениями, такими как рекламодатель, администратор, издатель в таблице пользователей , не рекомендуется и сверхурочно, его также может стать сложнее поддерживать.
Оригинал: “https://dev.to/niyiojeyinka/learn-to-use-laravel-guard-by-creating-an-ads-network-2ifp”