Если я добавлю Auth::routes()
в установку fre sh laravel 7, это отобразится на artisan route:list
:
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest |
| | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
| | GET|HEAD | password/confirm | password.confirm | App\Http\Controllers\Auth\ConfirmPasswordController@showConfirmForm | web,auth |
| | POST | password/confirm | | App\Http\Controllers\Auth\ConfirmPasswordController@confirm | web,auth |
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web |
| | POST | password/reset | password.update | App\Http\Controllers\Auth\ResetPasswordController@reset | web |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest |
| | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web,guest |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
Затем следует избегать определения тех же маршрутов снова с другой реализацией. Пусть Laravel сделает всю работу за вас.
Как вы можете видеть, уже есть промежуточные программы, примененные к этим предопределенным маршрутам. web
в этом сценарии - не само промежуточное ПО, а группа промежуточного ПО, определенная как app/Http/Kernel.php
. Ниже приведена более подробная информация о группах промежуточного программного обеспечения.
Если вы хотите «удалить» / -route из своего проекта, вы можете использовать маршрут перенаправления.
https://laravel.com/docs/7.x/routing#redirect -routes
Таким образом, ваш файл маршрута должен, в конце концов, выглядеть следующим образом:
Auth::routes();
Route::get('/clear-cache', function() {
Artisan::call('cache:clear');
});
// this will let laravel automatically redirect again if already logged in
Route::permanentRedirect('/', '/login');
Route::get('/home', 'HomeController@index')->name('home');
Автоматизация, которая перенаправит вас к /home
-руту, является взаимодействием между app/Http/Middleware/RedirectIfAuthenticated.php
и app/Providers/RouteServiceProvider.php
.
В последнем у вас есть атрибут, определяющий ваш HOME
/**
* The path to the "home" route for your application.
*
* @var string
*/
public const HOME = '/home';
Если у вас есть более поздние маршруты, к которым следует применять auth()
-программу Есть три способа сделать это (или, вероятно, 4):
Пожалуйста, сравните следующие примеры с этой ссылкой:
https://laravel.com/docs/7.x/middleware#middleware -групп
В целом Вначале это может быть немного трудно увидеть, нет никакой разницы между маршрутом контроллера и тем, который использует функцию закрытия. Методы, которые можно использовать, одинаковы для обеих реализаций. Только обработка маршрута в приложении будет другой.
Для одного маршрута, для которого требуется промежуточное программное обеспечение, просто добавьте его в конец. Это применимо как к маршрутам контроллера, так и к маршрутам закрытия.
Route::get('/', function () {
//
})->middleware('web');
// ^^^^ is as possible as:
Route::get('/', 'Controller@Method')->middleware('web');
Для нескольких маршрутов, использующих одно и то же промежуточное ПО, используйте метод промежуточного ПО. Можно использовать несколько промежуточных программ, назначенных как части массива.
Route::middleware(['web', 'subscribed'])->group(function () {
//
});
Если вам все еще нужно больше настроек, используйте метод group()
напрямую. Здесь вы можете определить не только промежуточное программное обеспечение, но также, например, префикс для всех вложенных маршрутов
Route::group(['middleware' => ['web'], 'prefix'=>'admin'], function () {
//
});
В качестве последнего варианта вы можете добавить любое промежуточное программное обеспечение в существующую группу промежуточного программного обеспечения или добавить собственную группу промежуточного программного обеспечения. в пределах app/Http/Kernel.php?
. Но это вызовет довольно сильную интеграцию, которая создаст исключение, если вы захотите отключить go, потому что все в группе промежуточного программного обеспечения используется постоянно для каждого маршрута, к которому применяется эта группа.
Пожалуйста, не смешивайте группы маршрутов с группами промежуточного программного обеспечения, поскольку это разные вещи.
Все эти примеры были найдены в документации для 7-й версии, поэтому они должны быть применимы и для вашего случая ,