laravel 5.3 mới Auth :: route ()


128

Gần đây tôi bắt đầu sử dụng laravel 5.3 để viết blog, nhưng tôi có một câu hỏi sau khi chạy php artisan make:auth

khi tôi chạy cái này, nó sẽ tạo ra các tuyến đường trong web.php

đây là mã trong đó:

Auth::routes();

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

Sau đó, tôi chạy php artisan route:list, tôi tìm thấy nhiều hành động, như LoginController @ đăng nhập ...

Nhưng tôi không tìm thấy những hành động này trong của tôi App\Http\Controllers\Auth, những hành động này ở đâu?

Và cũng là đại diện Auth::routes()cho cái gì , tôi không thể tìm thấy các tuyến đường về Auth.

Tôi cần ai đó giúp đỡ, cảm ơn bạn đã trả lời câu hỏi của tôi


11
Tôi có phải là người duy nhất bây giờ ghét tất cả những phép thuật Laravel đó không?
Muhammad Usman

1
Tôi không bận tâm đến các phép thuật của laravel, giá như chúng được ghi lại ... và hoạt động ổn định mà không cần phải đi bộ vòng quanh máy chủ trong khi niệm nghệ nhân php..gì?
baradhili

Mọi thứ Laravel không dành cho các nhà phát triển, nó dành cho các công ty và người dùng mới bắt đầu muốn đưa ra các ứng dụng mới nhanh chóng và dễ dàng, ngay cả tài liệu của họ. Tôi vẫn thích Codeigniter hơn nếu tôi có lựa chọn.
BlackPanther

Đọc hướng dẫn này: medium.com/@panjeh/…
panjeh

Câu trả lời:


215

Auth::routes()chỉ là một lớp trợ giúp giúp bạn tạo tất cả các tuyến cần thiết để xác thực người dùng. Thay vào đó, bạn có thể duyệt mã tại đây https://github.com/laravel/framework/blob/5.3/src/Illuminate/Routing/Router.php .

Đây là các tuyến đường

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

3
Cảm ơn! Tôi thấy ../Routing/Router.php và bây giờ tôi biết các tuyến hoạt động như thế nào. Nhưng phương thức tĩnh Auth là các tuyến đường () ở đâu? Tôi vẫn không thể tìm thấy nó, tha thứ cho tôi Tôi là một người mới bắt đầu laravel ...
g1eny0ung

4
Phương thức Auth :: lines ở đây github.com/laravel/framework/blob/5.3/src/Illuminate/Support/… và nó vẫn gọi hàm Router. Vui lòng đánh dấu đây là câu trả lời nếu điều này đã giúp bạn, cảm ơn.
Lee

2
Authlà một mặt tiền và sẽ được định nghĩa trong config/app.phpBạn sẽ tìm thấy lớp đóng vai trò là trình cung cấp của nó trong tệp cấu hình đó.
Jason

Có cùng một lỗi nhưng gặp lỗi: NotFoundHttpException in RouteCollection.php line 161:và một api khác đang chạy tốt.
151291

$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');không thể chạy Authapi là
151.291

52

Đây là Laravel 5.7 , Laravel 5.8 , Laravel 6.0Laravel 7.0 (lưu ý một thay đổi nhỏ bc trong 6.0 đối với lộ trình xác minh email).

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

Bạn có thể xác minh các tuyến đường này tại đây:


1
Thực sự đã có một sự thay đổi nhỏ từ 5.8 thành 6.x khi các liên kết của bạn hiển thị: Lộ trình cho liên kết xác minh email phải là 'email/verify/{id}/{hash}'. Nếu không, hàm băm không thể được xác minh và lỗi 403 sẽ xuất hiện với nội dung “Hành động này là trái phép”.
debite

46

Các định tuyến Auth cho Laravel 5.3 thay vì Auth :: lines (). Tôi hy vọng nó sẽ giúp ...

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']);
});

Vì vậy, nếu bạn thay đổi một số tên của các tuyến đường này, hãy nhớ cũng thay đổi chế độ xem các hành động của bài viết!


Cảm ơn nhưng bạn không cần phải 'middleware' => ['web'] vì: ngoài khả năng, nhóm phần mềm trung gian web được RouteServiceProvider tự động áp dụng cho tệp route / web.php của bạn.
panjeh

15

Đối với 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');

8

lệnh gọi hàm:

  1. (Auth) Illuminate \ Support \ Facades \ Auth @ route ( https://github.com/laravel/framework/blob/5.3/src/Illuminate/Support/Facades/Auth.php )
  2. (Ứng dụng) Illuminate \ Foundation \ Application @ auth
  3. (Tuyến đường) Chiếu sáng \ Định tuyến \ Bộ định tuyến

đó là tuyến đường như thế này:

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


Câu trả lời này thực sự làm sáng tỏ câu hỏi của OP. Cảm ơn @SilentCat.
Valentine Shi

Tôi nghĩ sẽ rất tốt nếu giải thích bằng lời những gì xảy ra trong 3 bước ở trên: Auth::routes()- Auth Routerfront - lấy thể hiện đối tượng từ vùng chứa Laravel và gọi phương thức có từ trước của nó auth. authlần lượt xác định các tuyến đường và bộ điều khiển tương ứng của chúng được tạo bởi php artisan make:auth. Đây là nó.
Valentine Shi

7

Điều này làm việc cho tôi với Laravel 5.6 .

Trong tệp web.php, chỉ cần thay thế:

Auth::routes();

Bởi:

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

Và bỏ liên kết Đăng ký trong hai tệp bên dưới:

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

4

Nếu bạn đang tìm kiếm các tuyến đường tương tự này cho phiên bản laravel 7, bạn sẽ tìm thấy nó ở đây Vendor/laravel/ui/src/AuthRouteMethods.php


1

Tôi ngạc nhiên là không ai đề cập đến lệnh php artisan route:list, lệnh này cung cấp danh sách tất cả các tuyến ứng dụng đã đăng ký (bao gồm Auth::routes()Passport::routes()nếu đã đăng ký)


0

lớp người dùng đăng nhập sử dụng một đặc điểm được gọi là AuthenticatesUsers

nếu bạn mở đặc điểm đó, bạn sẽ thấy các chức năng (điều này áp dụng cho các bộ điều khiển khác) Illuminate\Foundation\Auth\AuthenticatesUsers;

đây là mã đặc điểm https://github.com/laravel/framework/blob/5.1/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php

xin lỗi vì định dạng xấu, tôi đang sử dụng điện thoại của mình

Auth::routes()nó cũng chỉ gọi một hàm trả về các tuyến auth mà nó (tôi nghĩ)


Có, tôi xem qua Auth / dir, nhưng tôi không tìm thấy phương thức, như App \ Http \ Controllers \ Auth \ ResetPasswordController @ showResetForm, tôi có thể tìm phương thức ở đâu sau @, tôi mất nhiều thời gian để tìm nó, nhưng bây giờ Tôi cũng không thể tìm thấy nó..Tôi mới sử dụng laravel ..
g1eny0ung

1
đây là đường dẫn đầy đủ vendor\laravel\src\Illuminate\Foundation\Auth\ResetsPasswords, nếu bạn muốn thay đổi điều này hoặc điều gì đó, sự thay đổi dont này, chỉ cần thêm các phương pháp tương tự để điều khiển ur và sau đó thay đổi nó,
Achraf Khouadja

@Achraf Khouadja, Có vẻ như bạn thành thạo laravel. Tôi cần bạn giúp. Xem tại đây: stackoverflow.com/questions/41047583/…
moses toh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.