在Laravel 5.4中覆盖默认的Auth路由

Kir*_*iva 19 php laravel laravel-5.4

我想覆盖/login路由到/admin/login.在web.php我试过

//Auth::routes();
Route::get('login', ['as' => 'auth.login', 'uses' => 'App\Modules\Admin\Controllers\AdminUserController@loginAdminUser'])->name('login');
Run Code Online (Sandbox Code Playgroud)

但它仍然显示Laravel默认登录表单.我怎样才能做到这一点?

Gor*_*man 52

对于googlers,这里是Auth::routes();Laravel 5.4(到5.7)生成的路由的完整列表

// Authentication Routes...
Route::get('login', [
  'as' => 'login',
  'uses' => 'Auth\LoginController@showLoginForm'
]);
Route::post('login', [
  'as' => '',
  'uses' => 'Auth\LoginController@login'
]);
Route::post('logout', [
  'as' => 'logout',
  'uses' => 'Auth\LoginController@logout'
]);

// Password Reset Routes...
Route::post('password/email', [
  'as' => 'password.email',
  'uses' => 'Auth\ForgotPasswordController@sendResetLinkEmail'
]);
Route::get('password/reset', [
  'as' => 'password.request',
  'uses' => 'Auth\ForgotPasswordController@showLinkRequestForm'
]);
Route::post('password/reset', [
  'as' => 'password.update',
  'uses' => 'Auth\ResetPasswordController@reset'
]);
Route::get('password/reset/{token}', [
  'as' => 'password.reset',
  'uses' => 'Auth\ResetPasswordController@showResetForm'
]);

// Registration Routes...
Route::get('register', [
  'as' => 'register',
  'uses' => 'Auth\RegisterController@showRegistrationForm'
]);
Route::post('register', [
  'as' => '',
  'uses' => 'Auth\RegisterController@register'
]);
Run Code Online (Sandbox Code Playgroud)

php artisan route:list 将返回

+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| Domain | Method   | URI                    | Name             | Action                                                                 | Middleware   |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
|        | 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          |
|        | POST     | password/email         | password.email   | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web,guest    |
|        | GET|HEAD | password/reset         | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest    |
|        | POST     | password/reset         | password.update  | App\Http\Controllers\Auth\ResetPasswordController@reset                | web,guest    |
|        | GET|HEAD | password/reset/{token} | password.reset   | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web,guest    |
|        | GET|HEAD | register               | register         | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web,guest    |
|        | POST     | register               |                  | App\Http\Controllers\Auth\RegisterController@register                  | web,guest    |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
Run Code Online (Sandbox Code Playgroud)


Asi*_*zad 26

你也可以试试这个.

// Replace admin with whatever prefix you need

Route::group(['prefix' => 'admin'], function () {

    Auth::routes();

});
Run Code Online (Sandbox Code Playgroud)

您可以通过以下命令查看路由列表.

php artisan route:list

在此输入图像描述

  • 我非常感谢你,没有这导致我不得不开始重写所有路由,不仅如此,而且所有 LoginController 方法都要重写,并且路由重命名以避免混淆。我能够使用此前缀删除所有自定义路由! (2认同)
  • 完善!适用于5.7 (2认同)
  • 适用于 5.8 :) (2认同)
  • 谢谢我过去两天一直在寻找这个答案 (2认同)
  • 杰出的!这应该是正确的答案。 (2认同)

Luc*_*nte 11

5.5 LTS(已确认)/ 5.6(已确认)/ 5.7(?)的路线

有人可以确认它适用于5.7吗?

// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

// Registration Routes...
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'Auth\RegisterController@register');

// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');
Run Code Online (Sandbox Code Playgroud)


rav*_*can 9

当我正在努力解决同样的问题时,我设法找到了覆盖 laravel 5.5路线的好方法:

静态函数Auth :: routes(); :

public static function routes()
{
    static::$app->make('router')->auth();
}
Run Code Online (Sandbox Code Playgroud)

这里调用auth()函数创建auth路由:

laravel /框架/ src目录/照亮/路由/ Router.php

public function auth()
{
    // Authentication Routes...
    $this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
    $this->post('login', 'Auth\LoginController@login');
    $this->post('logout', 'Auth\LoginController@logout')->name('logout');

    // Registration Routes...
    $this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
    $this->post('register', 'Auth\RegisterController@register');

    // Password Reset Routes...
    $this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
    $this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
    $this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
    $this->post('password/reset', 'Auth\ResetPasswordController@reset');
}
Run Code Online (Sandbox Code Playgroud)

您可以将函数体复制并粘贴到web.php中,然后根据需要进行修改.


Bur*_*aco 5

您可以找到Laravel 5.7的所有登录路径。有一些新的电子邮件验证。相关文档在这里

代码块中的if语句基本上启用/禁用身份验证功能。通过使用助手,你可以传递registerresetverify的参数Auth::routes(['verify' => true]);。因此,请if根据需要使用config()或只是使用来修复语句。

在这里收拾东西!
当您致电时Auth::routes(),将注册以下路线。

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

// Registration Routes...
if (config('register'))
{
    Route::get('register', 'RegisterController@showRegistrationForm')->name('register');
    Route::post('register', 'RegisterController@register');
}
// Password Reset Routes...
if (config('reset'))
{
    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');
}
// Email Verification Routes...
if (config('verify'))
{
    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');
}
Run Code Online (Sandbox Code Playgroud)