laravel 5.3 yeni Auth :: rotaları ()


128

Son zamanlarda bir blog yazmak için laravel 5.3 kullanmaya başladım, ancak çalıştırdıktan sonra bir sorum var php artisan make:auth

bunu çalıştırdığımda, benim web.php

içindeki kod budur:

Auth::routes();

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

Sonra koşuyorum php artisan route:list, LoginController @ login gibi birçok eylem buluyorum ...

Ama bu eylemleri bende bulamadım, bunlar App\Http\Controllers\Authnerede?

Ve ayrıca ne anlama geliyor, Auth::routes()Auth ile ilgili rotaları bulamıyorum.

Birinin yardımına ihtiyacım var, sorumu cevapladığın için teşekkür ederim


11
Şu anda tüm bu Laravel büyülerinden nefret eden tek kişi ben miyim?
Muhammed Usman

1
Laravel büyülerine aldırmıyorum, eğer belgelenmiş olsalar ... ve php artisan zikrederken sunucuda widdershins dolaşmak zorunda kalmadan tutarlı bir şekilde çalıştılarsa .. ne?
baradhili

Laravel'in her şeyi geliştiriciler için değil, yeni uygulamaları hızlı ve kolay bir şekilde ortaya çıkarmak isteyen şirketler ve acemi kullanıcılar, hatta dokümantasyonu için. Bir seçeneğim olsaydı, yine de Codeigniter'i tercih ederdim.
BlackPanther

Bu kılavuzu okuyun: medium.com/@panjeh/…
panjeh

Yanıtlar:


215

Auth::routes()yalnızca kullanıcı kimlik doğrulaması için gerekli tüm yolları oluşturmanıza yardımcı olan bir yardımcı sınıftır. Koda https://github.com/laravel/framework/blob/5.3/src/Illuminate/Routing/Router.php adresinden göz atabilirsiniz .

İşte rotalar

// 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
Teşekkürler! ../Routing/Router.php dosyasını görüyorum ve şimdi rotaların nasıl çalıştığını biliyorum. Peki, Auth statik yöntem yolları () nerede? Hâlâ bulamıyorum, affedin ben bir laravel acemisiyim ...
g1eny0ung

4
Auth :: route yöntemi burada github.com/laravel/framework/blob/5.3/src/Illuminate/Support/… ve yine de Yönlendirici işlevini çağırıyor. Bu size yardımcı olduysa lütfen bunu yanıt olarak işaretleyin, teşekkürler.
Lee

2
Authbir cephe ve içinde tanımlanacaktır config/app.phpBu yapılandırma dosyasında sağlayıcısı olarak hareket eden sınıfı bulacaksınız.
Jason

Aynısı var ama hata alıyorum: NotFoundHttpException in RouteCollection.php line 161:ve başka bir API iyi çalışıyor.
151291

$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');çalıştırmak mümkün değildi Authapi var
151291

52

İşte Laravel 5.7 , Laravel 5.8 , Laravel 6.0 ve Laravel 7.0 (e-posta doğrulama rotasında 6.0'da küçük bir bc değişikliğine dikkat edin).

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

Bu rotaları burada doğrulayabilirsiniz:


1
Bağlantılarınızın gösterdiği gibi gerçekten de 5.8'den 6.x'e küçük bir değişiklik oldu: E-posta doğrulama bağlantısının yolu olmalıdır 'email/verify/{id}/{hash}'. Aksi takdirde hash doğrulanamaz ve "Bu eylem yetkisiz" diyen bir 403 hatası atılır.
2019'da

46

Auth, Laravel 5.3 için Auth :: route () için yönlendirir. Umut ediyorum bu yardım eder...

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

Bu nedenle, bu rotaların bazı adlarını değiştirirseniz, görünümlerde de gönderilerin eylemlerini değiştirmeyi unutmayın!


Teşekkürler, ancak 'middleware' => ['web'] 'e ihtiyacınız yok çünkü: kutunun dışında, web ara katman grubu RouteServiceProvider tarafından otomatik olarak route / web.php dosyanıza uygulanır.
panjeh

15

İçin 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

işlev çağrı sırası:

  1. (Auth) Illuminate \ Support \ Facades \ Auth @ yolları ( https://github.com/laravel/framework/blob/5.3/src/Illuminate/Support/Facades/Auth.php )
  2. (Uygulama) Illuminate \ Hazırlık \ Uygulama @ yetkilendirme
  3. (Güzergah) Illuminate \ Yönlendirme \ Yönlendirici

şu şekilde rota:

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


Bu cevap aslında OP'nin sorduğu soruya ışık tutuyor. Teşekkürler @SilentCat.
Valentine Shi

Yukarıdaki bu 3 adımda ne olduğunu sözlü olarak açıklamanın iyi olacağını düşündüm: Auth::routes()- Auth cephesi - Routernesne örneğini Laravel konteynerinden alır ve önceden var olan yöntemini çağırır auth. authsırayla, tarafından oluşturulan rotaları ve bunların ilgili kontrolörlerini tanımlar php artisan make:auth. Budur.
Valentine Shi

7

Bu benim için Laravel 5.6 ile çalıştı .

Dosyada şunu web.phpdeğiştirin:

Auth::routes();

Tarafından:

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

Ve aşağıdaki iki dosyadaki Kayıt bağlantısını kaldırın :

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

4

Laravel 7 versiyonu için aynı rotaları arıyorsanız, burada bulacaksınız. Vendor/laravel/ui/src/AuthRouteMethods.php


1

php artisan route:listKayıtlı tüm uygulama yollarının bir listesini veren komuttan kimsenin bahsetmediğine şaşırdım (dahil Auth::routes()ve Passport::routes()kayıtlıysa)


0

loginuser sınıfı adı verilen bir özellik kullanır AuthenticatesUsers

Bu özelliği açarsanız, işlevleri göreceksiniz (bu diğer denetleyiciler için geçerlidir) Illuminate\Foundation\Auth\AuthenticatesUsers;

işte özellik kodu https://github.com/laravel/framework/blob/5.1/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php

kötü format için özür dilerim, telefonumu kullanıyorum

aynı zamanda Auth::routes()sadece kendi kimlik doğrulamasını döndüren bir işlevi çağırır (sanırım)


Evet, Auth / dizine bakıyorum, ancak App \ Http \ Controllers \ Auth \ ResetPasswordController @ showResetForm gibi yöntemi bulamıyorum, yöntemi @ sonra nerede bulabilirim, bulmak için çok zamanım var, ama şimdi Ben de bulamıyorum ..
laravel'de

1
işte tam yol vendor\laravel\src\Illuminate\Foundation\Auth\ResetsPasswords, bunu veya başka bir şeyi değiştirmek istiyorsanız, bunu değiştirmeyin, aynı yöntemi kontrol cihazınıza ekleyin ve sonra değiştirin,
Achraf Khouadja

@Achraf Khouadja, Görünüşe göre Laravel'de ustasın. Yardımına ihtiyacım var. Buraya bakın: stackoverflow.com/questions/41047583/…
moses toh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.