laravel 5.3 new Auth::routes()


laravel 5.3 new Auth::routes()

最近我开始使用laravel 5.3写博客,但是在运行php artisan make:auth后我有一个问题

当我运行这个时,它将在我的web.php

中生成路由

这是其中的代码:

Auth::routes();
Route::get('/home', 'HomeController@index');

然后我运行php artisan route:list,我发现很多动作,如LoginController@login..。

但是我没有在我的App'Http'Controllers'Auth中找到这些动作,这些在哪里?

还有Auth::routes()是什么意思,我找不到Auth的路由

我需要人帮忙,谢谢你回答我的问题

Auth::routes()只是一个帮助类,它可以帮助您生成用户身份验证所需的所有路由。您可以在这里浏览代码https://github.com/laravel/framework/blob/5.3/src/Illuminate/Routing/Router.php。

以下是

// 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');
$this->post('password/email', 'Auth'ForgotPasswordController@sendResetLinkEmail');
$this->get('password/reset/{token}', 'Auth'ResetPasswordController@showResetForm');
$this->post('password/reset', 'Auth'ResetPasswordController@reset');

这里是Laravel 5.7Laravel 5.8Laravel 6.0Laravel 7.0Laravel 8.0(注意6.0中对邮件验证路由的一个小改动)。

// 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')->name('password.update');
// Confirm Password (added in v6.2)
Route::get('password/confirm', 'Auth'ConfirmPasswordController@showConfirmForm')->name('password.confirm');
Route::post('password/confirm', 'Auth'ConfirmPasswordController@confirm');
// Email Verification Routes...
Route::get('email/verify', 'Auth'VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}/{hash}', 'Auth'VerificationController@verify')->name('verification.verify'); // v6.x
/* Route::get('email/verify/{id}', 'Auth'VerificationController@verify')->name('verification.verify'); // v5.x */
Route::get('email/resend', 'Auth'VerificationController@resend')->name('verification.resend');

你可以在这里验证这些路由:

    5.7 v
  • https://github.com/laravel/framework/blob/5.7/src/Illuminate/Routing/Router.php L1176
  • 5.8 v
  • https://github.com/laravel/framework/blob/5.8/src/Illuminate/Routing/Router.php L1151
  • 6.0 v
  • https://github.com/laravel/framework/blob/6.x/src/Illuminate/Routing/Router.php L1178
  • v7.0 https://github.com/laravel/ui/blob/2.x/src/AuthRouteMethods.php(这已经被移动到laravel/ui包)
  • v8.0 https://github.com/laravel/ui/blob/3.x/src/AuthRouteMethods.php(除了增加可选的命名空间外,没有其他更改)

在Laravel 5.3中使用Auth::routes()代替Auth::routes()我希望这对你有帮助。

Route::group(['middleware' => ['web']], function() {
// Login Routes...
    Route::get('login', ['as' => 'login', 'uses' => 'Auth'LoginController@showLoginForm']);
    Route::post('login', ['as' => 'login.post', 'uses' => 'Auth'LoginController@login']);
    Route::post('logout', ['as' => 'logout', 'uses' => 'Auth'LoginController@logout']);
// Registration Routes...
    Route::get('register', ['as' => 'register', 'uses' => 'Auth'RegisterController@showRegistrationForm']);
    Route::post('register', ['as' => 'register.post', 'uses' => 'Auth'RegisterController@register']);
// Password Reset Routes...
    Route::get('password/reset', ['as' => 'password.reset', 'uses' => 'Auth'ForgotPasswordController@showLinkRequestForm']);
    Route::post('password/email', ['as' => 'password.email', 'uses' => 'Auth'ForgotPasswordController@sendResetLinkEmail']);
    Route::get('password/reset/{token}', ['as' => 'password.reset.token', 'uses' => 'Auth'ResetPasswordController@showResetForm']);
    Route::post('password/reset', ['as' => 'password.reset.post', 'uses' => 'Auth'ResetPasswordController@reset']);
});

因此,如果您更改了这些路由的一些名称,请记住在视图中更改帖子的动作!

, Laravel 5.5.x

// 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');

函数调用顺序:

  1. (身份验证)照射' '外墙' Auth@routes支持(https://github.com/laravel/framework/blob/5.3/src/Illuminate/Support/Facades/Auth.php)
  2. (App)照射'基础' Application@auth
  3. (路线)照射'路由'路由器

它的路由是这样的:

public function auth()
{
    // Authentication Routes...
    $this->get('login', 'Auth'AuthController@showLoginForm');
    $this->post('login', 'Auth'AuthController@login');
    $this->get('logout', 'Auth'AuthController@logout');
    // Registration Routes...
    $this->get('register', 'Auth'AuthController@showRegistrationForm');
    $this->post('register', 'Auth'AuthController@register');
    // Password Reset Routes...
    $this->get('password/reset/{token?}', 'Auth'PasswordController@showResetForm');
    $this->post('password/email', 'Auth'PasswordController@sendResetLinkEmail');
    $this->post('password/reset', 'Auth'PasswordController@reset');
}

Laravel 5.6

在文件web.php中,只需替换:

Auth::routes();
由:

//Auth::routes();
// Authentication Routes...
Route::get('admin/login', 'Auth'LoginController@showLoginForm')->name('login');
Route::post('admin/login', 'Auth'LoginController@login');
Route::post('admin/logout', 'Auth'LoginController@logout')->name('logout');
// 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');

并删除下面两个文件中的Register链接

welcome.blade.php
layouts/app.blade.php

如果你在这些相同的路由中搜索laravel 7版本,你会在这里找到Vendor/laravel/ui/src/AuthRouteMethods.php

Laravel 8:

use App'Http'Controllers'Auth'LoginController;
use App'Http'Controllers'Auth'RegisterController;
use App'Http'Controllers'Auth'ForgotPasswordController;
use App'Http'Controllers'Auth'ConfirmPasswordController;
use App'Http'Controllers'Auth'VerificationController;
Route::get('login', [LoginController::class, 'showLoginForm'])->name('login');
Route::post('login', [LoginController::class,'login']);
Route::post('logout',  [LoginController::class,'logout'])->name('logout');
// Registration Routes...
Route::get('register', [RegisterController::class, 'showRegistrationForm'])->name('register');
Route::post('register', [RegisterController::class, 'register']);
// Password Reset Routes...
Route::get('password/reset', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('password.request');
Route::post('password/email', [ForgotPasswordController::class, 'sendResetLinkEmail'])->name('password.email');
Route::get('password/reset/{token}', [ForgotPasswordController::class, 'showResetForm'])->name('password.reset');
Route::post('password/reset', [ForgotPasswordController::class, 'reset'])->name('password.update');
// Confirm Password 
Route::get('password/confirm', [ConfirmPasswordController::class, 'showConfirmForm'])->name('password.confirm');
Route::post('password/confirm', [ConfirmPasswordController::class, 'confirm']);
// Email Verification Routes...
Route::get('email/verify', [VerificationController::class, 'show'])->name('verification.notice');
Route::get('email/verify/{id}/{hash}', [VerificationController::class, 'verify'])->name('verification.verify');
Route::get('email/resend',  [VerificationController::class, 'resend'])->name('verification.resend');
// Home
Route::get('/home', [App'Http'Controllers'HomeController::class, 'index'])->name('home');

如果你是在laravel 5.7及以上Auth::routes(['register' => false]);在web.php

更多可能的选项如下:

Auth::routes([
  'register' => false, // Routes of Registration
  'reset' => false,    // Routes of Password Reset
  'verify' => false,   // Routes of Email Verification
]);

我很惊讶没有人提到命令php artisan route:list,它给出了所有注册的应用程序路由的列表(包括Auth::routes()Passport::routes()如果注册)

loginuser类使用了一个名为AuthenticatesUsers的trait

如果你打开trait,你会看到函数(这适用于其他控制器)Illuminate'Foundation'Auth'AuthenticatesUsers;

下面是trait代码https://github.com/laravel/framework/blob/5.1/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php

抱歉格式不好,我在用手机

Auth::routes()它只是调用一个函数,返回认证路由就是它(我认为)

我跑完后-作曲家需要laravel/ui-php artisan ui:auth

我开始看到Auth文件夹中的类。Http/控制器/认证

在Http/Controller/Auth中可以找到所有关于身份验证的控制器。我有重定向问题,但后来我在Http/Providers下的RouteServiceProvider.php中创建了一个新的const…并在控制器中使用它来重定向到我想要的页面…protected $redirectTo = RouteServiceProvider::ADMIN;

适用于Laravel 10

use App'Http'Controllers'Auth'LoginController;
use App'Http'Controllers'Auth'RegisterController;
use App'Http'Controllers'Auth'ForgotPasswordController;
use App'Http'Controllers'Auth'ConfirmPasswordController;
use App'Http'Controllers'Auth'VerificationController;
Route::get('login', [LoginController::class, 'showLoginForm'])->name('login');
Route::post('login', [LoginController::class,'login']);
Route::post('logout',  [LoginController::class,'logout'])->name('logout');
// Registration Routes...
Route::get('register', [RegisterController::class, 'showRegistrationForm'])->name('register');
Route::post('register', [RegisterController::class, 'register']);
// Password Reset Routes...
Route::get('password/reset', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('password.request');
Route::post('password/email', [ForgotPasswordController::class, 'sendResetLinkEmail'])->name('password.email');
Route::get('password/reset/{token}', [ForgotPasswordController::class, 'showResetForm'])->name('password.reset');
Route::post('password/reset', [ForgotPasswordController::class, 'reset'])->name('password.update');
// Confirm Password 
Route::get('password/confirm', [ConfirmPasswordController::class, 'showConfirmForm'])->name('password.confirm');
Route::post('password/confirm', [ConfirmPasswordController::class, 'confirm']);
// Email Verification Routes...
Route::get('email/verify', [VerificationController::class, 'show'])->name('verification.notice');
Route::get('email/verify/{id}/{hash}', [VerificationController::class, 'verify'])->name('verification.verify');
Route::get('email/resend',  [VerificationController::class, 'resend'])->name('verification.resend');