Примените Auth Middleware ко всем маршрутам Laravel - PullRequest
0 голосов
/ 15 января 2019

Как правильно аутентифицировать все маршруты, кроме входа в систему и регистрации, когда я применяю промежуточное ПО аутентификации на всех контроллерах? Есть ли способ применить промежуточное ПО аутентификации в одном месте и исключить вход в систему, зарегистрировать маршруты?

Ответы [ 3 ]

0 голосов
/ 15 января 2019

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

Route::group(['middleware' => ['auth']], function () { 
    Route::get('home', 'HomeController@index');
    Route::post('save-user', 'UserController@saveUser');
    Route::put('edit-user', 'UserController@editUser');
});

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

0 голосов
/ 15 января 2019

Вы можете добавить промежуточное ПО ко всему файлу web.php маршрута, добавив промежуточное ПО в отображение маршрутов в RouteServiceProvider.

Перейти к app/Providers/RouteServiceProvider.php и в mapWebRoutes(), изменить middleware('web') на middleware(['web', 'auth']):

protected function mapWebRoutes()
{
    Route::middleware(['web', 'auth'])
         ->namespace($this->namespace)
         ->group(base_path('routes/web.php'));
}

Создать новый метод mapAuthRoutes():

protected function mapAuthRoutes()
{
    Route::middleware('web')
        ->namespace('App\Http\Controllers\Auth')
        ->group(base_path('routes/auth.php'));
}

Отобразите это на карте:

public function map()
{
    $this->mapAuthRoutes(); // <-- add this
    $this->mapWebRoutes();
    ...
}

Создайте файл auth.php в папке routes, затем вставьте следующее (и удалите ненужные файлы):

<?php

use Illuminate\Support\Facades\Route;

Route::get('login', 'LoginController@showLoginForm')->name('login');

Route::post('login', 'LoginController@login')->name('login');

Route::post('logout', 'LoginController@logout')->name('logout');


Route::get('register', 'RegisterController@showRegistrationForm')->name('register');

Route::post('register', 'RegisterController@register')->name('register');


Route::get('password/reset', 'ForgotPasswordController@showLinkRequestForm')->name('password.request');

Route::post('password/email', 'ForgotPasswordController@sendResetLinkEmail')->name('password.email');

Route::get('password/reset/{token}', 'ResetPasswordController@showResetForm')->name('password.reset');

Route::post('password/reset', 'ResetPasswordController@reset')->name('password.update');


Route::get('email/verify', 'VerificationController@show')->name('verification.notice');

Route::get('email/verify/{id}', 'VerificationController@verify')->name('verification.verify');

Route::get('email/resend', 'VerificationController@resend')->name('verification.resend');

Теперь вы можете настроить все в 1 месте, например prefix, name, middleware и namespace.

Проверьте php artisan route:list, чтобы увидеть результаты:)

0 голосов
/ 15 января 2019

вы можете применить промежуточное программное обеспечение в файле rout.php, вам нужно поместить все ваши маршруты в группу и добавить промежуточное программное обеспечение 'auth' (кроме уже настроенного Auth :: routs ()) Например:

Route::middleware(['first', 'second'])->group(function () {
    Route::get('/', function () {
        // Uses first & second Middleware
    });

    Route::get('user/profile', function () {
        // Uses first & second Middleware
    });
});

Более подробную информацию можно найти в документации: https://laravel.com/docs/5.7/routing#route-group-middleware

...