laravel 5.3 baru Auth :: routes ()

128

Baru-baru ini saya mulai menggunakan laravel 5.3 untuk menulis blog, tetapi saya memiliki pertanyaan setelah menjalankan php artisan make:auth

ketika saya menjalankan ini, itu akan menghasilkan rute di saya web.php

ini kode di dalamnya:

Auth::routes();

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

Lalu saya jalankan php artisan route:list, saya menemukan banyak tindakan, seperti LoginController @ login ...

Tapi saya tidak menemukan tindakan ini dalam diri saya App\Http\Controllers\Auth, di mana ini?

Dan juga untuk apa Auth::routes()kepanjangannya, saya tidak dapat menemukan rute tentang Auth.

Saya butuh bantuan seseorang, terima kasih untuk menjawab pertanyaan saya

g1eny0ung.dll
sumber
11
Apakah saya satu-satunya yang sekarang membenci semua sihir Laravel?
Muhammad Usman
1
Saya tidak keberatan dengan sihir laravel, jika saja mereka didokumentasikan ... dan bekerja secara konsisten tanpa harus berjalan di sekitar server sambil meneriakkan php artisan..apa?
baradhili
Semuanya Laravel bukan untuk pengembang, ini untuk perusahaan dan pengguna pemula yang ingin menghadirkan aplikasi baru dengan cepat dan mudah, bahkan untuk dokumentasi mereka. Saya masih lebih suka Codeigniter jika saya punya pilihan.
BlackPanther
Baca panduan ini: medium.com/@panjeh/…
panjeh

Jawaban:

215

Auth::routes()hanyalah kelas pembantu yang membantu Anda menghasilkan semua rute yang diperlukan untuk otentikasi pengguna. Anda dapat menelusuri kodenya di sini https://github.com/laravel/framework/blob/5.3/src/Illuminate/Routing/Router.php sebagai gantinya.

Berikut rutenya

// 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');
Lee
sumber
3
Terima kasih! Saya melihat ../Routing/Router.php dan sekarang saya tahu bagaimana rute bekerja. Tapi di mana Auth static method routes ()? Saya masih tidak dapat menemukannya, maafkan saya, saya pemula laravel ...
g1eny0ung
4
Metode Auth :: routes ada di sini github.com/laravel/framework/blob/5.3/src/Illuminate/Support/… dan tetap memanggil fungsi Router. Harap tandai ini sebagai jawaban jika ini telah membantu Anda, terima kasih.
Lee
2
Authadalah fasad dan akan ditentukan di config/app.phpAnda akan menemukan kelas yang bertindak sebagai penyedia di file konfigurasi tersebut.
Jason
Memiliki kesalahan yang sama tetapi mendapatkan:, NotFoundHttpException in RouteCollection.php line 161:dan api lain berjalan dengan baik.
151291
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');tidak dapat menjalankan Authapi
151291
52

Berikut Laravel 5.7 , Laravel 5.8 , Laravel 6.0 , dan Laravel 7.0 (perhatikan perubahan kecil BC di 6.0 ke rute verifikasi 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');

Anda dapat memverifikasi rute ini di sini:

zyglobe.dll
sumber
1
Memang ada perubahan kecil dari 5,8 menjadi 6.x seperti yang ditunjukkan tautan Anda: Rute untuk tautan verifikasi email seharusnya 'email/verify/{id}/{hash}'. Jika tidak, hash tidak dapat diverifikasi dan kesalahan 403 akan muncul yang mengatakan "Tindakan ini tidak sah".
debit
46

Auth rute untuk Laravel 5.3 sebagai gantinya Auth :: routes (). Saya harap ini membantu ...

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

Jadi jika Anda mengubah beberapa nama dari rute ini, ingatlah untuk juga mengubah tindakan dari posting dalam tampilan!

Walter Pozzguo
sumber
Terima kasih, tetapi Anda tidak perlu 'middleware' => ['web'] karena: di luar kotak, grup middleware web secara otomatis diterapkan ke file routes / web.php Anda oleh RouteServiceProvider.
panjeh
15

Untuk 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');
Farid Movsumov
sumber
8

fungsi panggilan urutan:

  1. (Auth) Menerangi rute \ Support \ Facades \ Auth @ ( https://github.com/laravel/framework/blob/5.3/src/Illuminate/Support/Facades/Auth.php )
  2. (App) Menerangi \ Foundation \ Application @ auth
  3. (Route) Menerangi \ Routing \ Router

Rutenya seperti ini:

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');
}
SilentCat
sumber
Jawaban ini sebenarnya menjelaskan pertanyaan yang diajukan oleh OP. Terima kasih @SilentCat.
Valentine Shi
Saya pikir akan lebih baik untuk menjelaskan secara lisan apa yang terjadi dalam 3 langkah di atas: Auth::routes()- fasad Auth - mengambil Routercontoh objek dari wadah Laravel dan memanggil metode yang sudah ada sebelumnya auth. authpada gilirannya menentukan rute dan pengontrolnya masing-masing yang dihasilkan oleh php artisan make:auth. Ini dia.
Valentine Shi
7

Ini berhasil untuk saya dengan Laravel 5.6 .

Di dalam file web.php, ganti saja:

Auth::routes();

Oleh:

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

Dan hapus tautan Register di dua file di bawah ini:

welcome.blade.php
layouts/app.blade.php
DevonDahon
sumber
4

Jika Anda mencari rute yang sama untuk versi laravel 7, Anda akan menemukannya di sini Vendor/laravel/ui/src/AuthRouteMethods.php

kunal rajput
sumber
1

Saya terkejut tidak ada yang menyebutkan perintah tersebut php artisan route:list, yang memberikan daftar semua rute aplikasi terdaftar (termasuk Auth::routes()dan Passport::routes()jika terdaftar)

Shay
sumber
0

kelas loginuser menggunakan sifat yang disebut AuthenticatesUsers

jika Anda membuka sifat itu, Anda akan melihat fungsinya (ini berlaku untuk pengontrol lain) Illuminate\Foundation\Auth\AuthenticatesUsers;

berikut adalah kode sifat https://github.com/laravel/framework/blob/5.1/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php

maaf untuk format yang buruk, saya menggunakan ponsel saya

juga Auth::routes()hanya memanggil fungsi yang mengembalikan rute auth itu (saya pikir)

Achraf Khouadja
sumber
Ya, saya melihat melalui Auth / dir, tetapi saya tidak menemukan metode tersebut, seperti App \ Http \ Controllers \ Auth \ ResetPasswordController @ showResetForm, di mana saya dapat menemukan metode setelah @, saya menghabiskan banyak waktu untuk menemukannya, tetapi sekarang Saya juga tidak dapat menemukannya..Saya baru mengenal laravel ..
g1eny0ung
1
di sini adalah jalur lengkap vendor\laravel\src\Illuminate\Foundation\Auth\ResetsPasswords, jika Anda ingin mengubah ini atau sesuatu, jangan ubah ini, cukup tambahkan metode yang sama ke pengontrol Anda dan kemudian ubah,
Achraf Khouadja
@Achraf Khouadja, Sepertinya Anda menguasai laravel. Saya butuh bantuanmu. Lihat di sini: stackoverflow.com/questions/41047583/…
moses toh