laravel 5.3 nowe Auth :: tours ()

128

Ostatnio zaczynam używać laravel 5.3 do pisania bloga, ale po biegu mam pytanie php artisan make:auth

kiedy to uruchomię, wygeneruje trasy w moim web.php

to jest kod w nim:

Auth::routes();

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

Następnie uruchamiam php artisan route:list, znajduję wiele akcji, takich jak LoginController @ login ...

Ale nie znalazłem tych działań w moim App\Http\Controllers\Auth, gdzie to jest?

A także po co to Auth::routes()stoisko, nie mogę znaleźć tras o Auth.

Potrzebuję pomocy, dziękuję za odpowiedź na moje pytanie

g1eny0ung
źródło
11
Czy tylko ja nienawidzę tych wszystkich magii Laravel?
Muhammad Usman,
1
Nie mam nic przeciwko magii laravel, gdyby tylko była udokumentowana ... i działała konsekwentnie bez konieczności chodzenia po serwerze podczas śpiewania php rzemieślnik ... co?
baradhili
Wszystko, co Laravel nie jest dla programistów, jest przeznaczone dla firm i początkujących użytkowników, którzy chcą szybko i łatwo wprowadzać nowe aplikacje, nawet ich dokumentację. Nadal wolałbym Codeigniter, gdybym miał wybór.
BlackPanther
Przeczytaj ten przewodnik: medium.com/@panjeh/…
panjeh

Odpowiedzi:

215

Auth::routes()to tylko klasa pomocnicza, która pomaga generować wszystkie trasy wymagane do uwierzytelnienia użytkownika. Zamiast tego możesz przeglądać kod tutaj https://github.com/laravel/framework/blob/5.3/src/Illuminate/Routing/Router.php .

Oto trasy

// 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');
Zawietrzny
źródło
3
Dzięki! Widzę ../Routing/Router.php i teraz wiem, jak działają trasy.Ale gdzie jest metoda statyczna Routing Auth ()? Nadal nie mogę go znaleźć, wybacz mi, jestem początkującym laravelem ...
g1eny0ung
4
Auth :: Routes jest tutaj github.com/laravel/framework/blob/5.3/src/Illuminate/Support/ ... i mimo to wywołuje funkcję Router. Zaznacz to jako odpowiedź, jeśli to ci pomogło. Dziękuję.
Lee
2
Authjest fasadą i zostanie zdefiniowana w. config/app.phpW tym pliku konfiguracyjnym znajdziesz klasę, która działa jako jej dostawca.
Jason
To samo, ale pojawia się błąd NotFoundHttpException in RouteCollection.php line 161::, a inny interfejs API działa poprawnie.
151291
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');nie można uruchomić Authapi
151291
52

Oto Laravel 5.7 , Laravel 5.8 , Laravel 6.0 i Laravel 7.0 (zwróć uwagę na niewielką zmianę pne w wersji 6.0 w ścieżce weryfikacji e-mailowej).

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

Tutaj możesz zweryfikować te trasy:

zyglobe
źródło
1
Rzeczywiście nastąpiła niewielka zmiana z 5.8 na 6.x, jak pokazują twoje linki: Trasa dla linku weryfikacyjnego e-mail powinna być 'email/verify/{id}/{hash}'. W przeciwnym razie nie można zweryfikować skrótu i ​​zostanie zgłoszony błąd 403 z informacją „Ta akcja jest nieautoryzowana”.
debiut
46

Auth Routes dla Laravel 5.3 zamiast Auth :: tours (). Mam nadzieję, że to pomoże...

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

Jeśli więc zmienisz niektóre nazwy tych tras, pamiętaj, aby zmienić również w widokach działania postów!

Walter Pozzguo
źródło
Dzięki, ale nie musisz używać 'oprogramowania pośredniego' => ['web'], ponieważ: po wyjęciu z pudełka, grupa oprogramowania pośredniego w sieci jest automatycznie stosowana do pliku routingu / web.php przez dostawcę RouteServiceProvider.
panjeh
15

W przypadku 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
źródło
8

kolejność wywołań funkcji:

  1. (Auth) Illuminate \ Support \ Facades \ Auth @ Routes ( https://github.com/laravel/framework/blob/5.3/src/Illuminate/Support/Facades/Auth.php )
  2. (Aplikacja) Illuminate \ Foundation \ Application @ auth
  3. (Trasa) Podświetl \ Routing \ Router

trasa wygląda tak:

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
źródło
Ta odpowiedź faktycznie rzuca światło na pytanie zadane przez OP. Dzięki @SilentCat.
Valentine Shi
Pomyślałem, że dobrze byłoby ustnie wyjaśnić, co dzieje się w tych 3 krokach powyżej: Auth::routes()- fasada Auth - pobiera Routerinstancję obiektu z kontenera Laravel i wywołuje istniejącą wcześniej metodę auth. authz kolei definiuje trasy i odpowiadające im kontrolery, które zostały wygenerowane przez php artisan make:auth. To jest to.
Valentine Shi
7

To zadziałało dla mnie z Laravel 5.6 .

W pliku web.phppo prostu zamień:

Auth::routes();

Przez:

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

Usuń link Zarejestruj się w dwóch poniższych plikach:

welcome.blade.php
layouts/app.blade.php
DevonDahon
źródło
4

Jeśli szukasz tych samych tras dla wersji laravel 7, znajdziesz ją tutaj Vendor/laravel/ui/src/AuthRouteMethods.php

kunal rajput
źródło
1

Jestem zaskoczony, że nikt nie wspomniał o poleceniu php artisan route:list, które podaje listę wszystkich zarejestrowanych tras do aplikacji (w tym Auth::routes()i Passport::routes()jeśli są zarejestrowane)

Shay
źródło
0

klasa loginuser używa cechy o nazwie AuthenticatesUsers

jeśli otworzysz tę cechę, zobaczysz funkcje (dotyczy to innych kontrolerów) Illuminate\Foundation\Auth\AuthenticatesUsers;

tutaj jest kod cechy https://github.com/laravel/framework/blob/5.1/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php

przepraszam za zły format, używam telefonu

również Auth::routes()wywołuje funkcję, która zwraca trasy autoryzacji, to wszystko (myślę)

Achraf Khouadja
źródło
Tak, przeglądam Auth / dir, ale nie znajduję metody, na przykład App \ Http \ Controllers \ Auth \ ResetPasswordController @ showResetForm, gdzie mogę znaleźć metodę po @, kosztuje dużo czasu, aby ją znaleźć, ale teraz Też nie mogę go znaleźć .. Jestem nowy w laravel ..
g1eny0ung
1
tutaj jest pełna ścieżka vendor\laravel\src\Illuminate\Foundation\Auth\ResetsPasswords, jeśli chcesz to zmienić, nie zmieniaj tego, po prostu dodaj tę samą metodę do swojego kontrolera, a następnie zmień ją,
Achraf Khouadja
@Achraf Khouadja, Wygląda na to, że jesteś mistrzem Laravel. Potrzebuję twojej pomocy. Zajrzyj tutaj: stackoverflow.com/questions/41047583/…
moses toh