Переопределение маршрутов Auth по умолчанию в Laravel 5.4
Я хочу переопределить /login
маршрут /admin/login
. В web.php
я попробовал
//Auth::routes();
Route::get('login', ['as' => 'auth.login', 'uses' => 'App\Modules\Admin\Controllers\[email protected]'])->name('login');
Но по-прежнему отображается форма входа в Laravel по умолчанию. Как я могу это сделать?
Ответы
Ответ 1
Для googlers, вот полный список маршрутов, которые генерируются Auth::routes();
в Laravel> = 5.4
// Authentication Routes...
Route::get('login', [
'as' => 'login',
'uses' => 'Auth\[email protected]'
]);
Route::post('login', [
'as' => '',
'uses' => 'Auth\[email protected]'
]);
Route::post('logout', [
'as' => 'logout',
'uses' => 'Auth\[email protected]'
]);
// Password Reset Routes...
Route::post('password/email', [
'as' => 'password.email',
'uses' => 'Auth\[email protected]'
]);
Route::get('password/reset', [
'as' => 'password.request',
'uses' => 'Auth\[email protected]'
]);
Route::post('password/reset', [
'as' => 'password.update',
'uses' => 'Auth\[email protected]'
]);
Route::get('password/reset/{token}', [
'as' => 'password.reset',
'uses' => 'Auth\[email protected]'
]);
// Registration Routes...
Route::get('register', [
'as' => 'register',
'uses' => 'Auth\[email protected]'
]);
Route::post('register', [
'as' => '',
'uses' => 'Auth\[email protected]'
]);
php artisan route:list
вернется
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| | GET|HEAD | login | login | App\Http\Controllers\Auth\[email protected] | web,guest |
| | POST | login | | App\Http\Controllers\Auth\[email protected] | web,guest |
| | POST | logout | logout | App\Http\Controllers\Auth\[email protected] | web |
| | POST | password/email | password.email | App\Http\Controllers\Auth\[email protected] | web,guest |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\[email protected] | web,guest |
| | POST | password/reset | password.update | App\Http\Controllers\Auth\[email protected] | web,guest |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\[email protected] | web,guest |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\[email protected] | web,guest |
| | POST | register | | App\Http\Controllers\Auth\[email protected] | web,guest |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
Ответ 2
Вы также можете попробовать это.
// Replace admin with whatever prefix you need
Route::group(['prefix' => 'admin'], function () {
Auth::routes();
});
Вы можете просмотреть список маршрутов по следующей команде.
php artisan route:list
Ответ 3
Маршруты для 5.5 LTS (подтверждено)/5.6 (подтверждено)/5.7 (?)
Может ли кто-то подтвердить, что он работает с 5.7?
// Authentication Routes...
Route::get('login', 'Auth\[email protected]')->name('login');
Route::post('login', 'Auth\[email protected]');
Route::post('logout', 'Auth\[email protected]')->name('logout');
// Registration Routes...
Route::get('register', 'Auth\[email protected]')->name('register');
Route::post('register', 'Auth\[email protected]');
// Password Reset Routes...
Route::get('password/reset', 'Auth\[email protected]')->name('password.request');
Route::post('password/email', 'Auth\[email protected]')->name('password.email');
Route::get('password/reset/{token}', 'Auth\[email protected]')->name('password.reset');
Route::post('password/reset', 'Auth\[email protected]');
Ответ 4
Поскольку я боролся с той же проблемой, мне удалось найти хороший способ переопределить маршруты laravel 5.5:
Статическая функция Auth :: routes(); :
public static function routes()
{
static::$app->make('router')->auth();
}
Здесь вызывается функция auth(), которая создает auth-маршруты:
Laravel/рамки /SRC/Осветите /Routing/router.php
public function auth()
{
// Authentication Routes...
$this->get('login', 'Auth\[email protected]')->name('login');
$this->post('login', 'Auth\[email protected]');
$this->post('logout', 'Auth\[email protected]')->name('logout');
// Registration Routes...
$this->get('register', 'Auth\[email protected]')->name('register');
$this->post('register', 'Auth\[email protected]');
// Password Reset Routes...
$this->get('password/reset', 'Auth\[email protected]')->name('password.request');
$this->post('password/email', 'Auth\[email protected]')->name('password.email');
$this->get('password/reset/{token}', 'Auth\[email protected]')->name('password.reset');
$this->post('password/reset', 'Auth\[email protected]');
}
Вы можете скопировать и вставить тело функции прямо в ваш web.php и изменить их по своему усмотрению.
Ответ 5
Вы можете найти все маршруты входа в Laravel 5.7. Есть что-то новое, проверка электронной почты. Связанная документация находится здесь.
Если инструкции в блоке кода в основном включают/отключают функции auth. Используя хелпер, вы можете передать register
, reset
, verify
параметры на Auth::routes(['verify' => true]);
, Так что исправьте if
statements с помощью config()
или просто используйте по своему усмотрению.
Завершите здесь!
Когда вы вызываете Auth::routes()
, будут зарегистрированы следующие маршруты.
Route::get('login', '[email protected]')->name('login');
Route::post('login', '[email protected]');
Route::post('logout', '[email protected]')->name('logout');
// Registration Routes...
if (config('register'))
{
Route::get('register', '[email protected]')->name('register');
Route::post('register', '[email protected]');
}
// Password Reset Routes...
if (config('reset'))
{
Route::get('password/reset', '[email protected]')->name('password.request');
Route::post('password/email', '[email protected]')->name('password.email');
Route::get('password/reset/{token}', '[email protected]')->name('password.reset');
Route::post('password/reset', '[email protected]')->name('password.update');
}
// Email Verification Routes...
if (config('verify'))
{
Route::get('email/verify', '[email protected]')->name('verification.notice');
Route::get('email/verify/{id}', '[email protected]')->name('verification.verify');
Route::get('email/resend', '[email protected]')->name('verification.resend');
}
Ответ 6
Измените это на:
Route::get('/admin/login', ['as' => 'admin.login', 'uses' => 'App\Modules\Admin\Controllers\[email protected]']);
Route::get('login', ['as' => 'login', 'uses' => 'App\Modules\Admin\Controllers\[email protected]']);
name
- синонимы as
ключ массива. Поэтому нет необходимости добавлять name
в конце.
Ответ 7
Я подготовил всеобъемлющий учебник для Auth :: routs() в Laravel 5.7 ad 5.8.
Я надеюсь, что это полезно.
Эта ссылка