laravel 5.3 새로운 Auth :: routes ()


128

최근에 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에 대한 경로를 찾을 수 없습니다.

도움이 필요 해요, 제 질문에 답 해주셔서 감사합니다


10
라 라벨 마법을 싫어하는 사람은 나뿐일까요?
Muhammad Usman

1
나는 laravel 마술에 신경 쓰지 않는다. 그들이 문서화되어 있다면 ... 그리고 PHP 장인을 외치는 동안 서버 주변을 걷지 않고도 일관되게 일했다.
baradhili

Laravel은 모든 것이 개발자를위한 것이 아니라 문서를 포함하여 새 앱을 빠르고 쉽게 가져 오려는 회사 및 초보 사용자를위한 것입니다. 선택할 수 있다면 Codeigniter를 선호합니다.
BlackPanther 2019

이 가이드 읽기 : medium.com/@panjeh/…
panjeh

답변:


214

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

2
감사! ../Routing/Router.php가 표시되고 이제 경로가 어떻게 작동하는지 알 수 있지만 Auth 정적 메서드 routes ()는 어디에 있습니까? 나는 아직도 내가 laravel 초보자 오전 용서, 그것을 찾을 수 없습니다 ...
g1eny0ung

4
Auth :: routes 메소드는 여기 github.com/laravel/framework/blob/5.3/src/Illuminate/Support/… 이며 어쨌든 Router 함수를 호출합니다. 도움이 되었으면 답으로 표시해주세요. 감사합니다.
Lee

2
AuthA는 외관 과 정의됩니다 config/app.php그 구성 파일의 공급자 역할을하는 클래스를 발견 할 것이다 당신.
Jason

동일하지만 오류가 발생 NotFoundHttpException in RouteCollection.php line 161:하고 다른 API가 정상적으로 실행되고 있습니다.
151291

$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');AuthAPI 를 실행할 수 없음
151291

52

다음은 Laravel 5.7 , Laravel 5.8 , Laravel 6.0Laravel 7.0입니다 (6.0에서 이메일 확인 경로에 대한 사소한 BC 변경 사항에 유의하십시오).

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

여기에서 이러한 경로를 확인할 수 있습니다.


1
링크에 표시되는 것처럼 실제로 5.8에서 6.x로 약간 변경되었습니다. 이메일 확인 링크의 경로는 'email/verify/{id}/{hash}'. 그렇지 않으면 해시를 확인할 수 없으며 "이 작업은 권한이 없습니다"라는 403 오류가 발생합니다.
-09-15

46

Auth :: routes () 대신 Laravel 5.3에 대한 인증 경로. 도움이 되었으면합니다 ...

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

따라서 이러한 경로의 일부 이름을 변경하는 경우 게시물의 작업을보기에서도 변경해야합니다.


감사합니다. 'middleware'=> [ 'web'] 필요는 없습니다. 왜냐하면 다음과 같은 이유로 웹 미들웨어 그룹은 RouteServiceProvider에 의해 자동으로 route / web.php 파일에 적용됩니다.
panjeh

15

대한 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

함수 호출 순서 :

  1. (인증) Illuminate \ Support \ Facades \ Auth @ routes ( https://github.com/laravel/framework/blob/5.3/src/Illuminate/Support/Facades/Auth.php )
  2. (앱) Illuminate \ Foundation \ Application @ auth
  3. (경로) Illuminate \ Routing \ Router

다음과 같은 경로입니다.

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


이 답변은 실제로 OP가 묻는 질문에 빛을 비 춥니 다. 감사합니다 @SilentCat.
Valentine Shi

위의 세 단계에서 일어나는 일을 구두로 설명하는 것이 좋을 것이라고 생각했습니다. Auth::routes()-Auth 파사드 Router-Laravel 컨테이너에서 객체 인스턴스를 검색하고 기존 메소드를 호출합니다 auth. auth차례로에서 생성 한 경로와 각각의 컨트롤러를 정의합니다 php artisan make:auth. 이거 야.
Valentine Shi

7

이것은 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');

그리고 아래 두 파일에서 등록 링크를 제거하십시오 .

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

4

laravel 7 버전에 대해 동일한 경로를 검색하는 경우 여기에서 찾을 수 있습니다. Vendor/laravel/ui/src/AuthRouteMethods.php


1

나는 놀랄 아무도 명령 언급되지 해요 php artisan route:list(을 포함한 모든 등록 된 응용 프로그램 경로의 목록을 제공 Auth::routes()하고 Passport::routes()있는 경우 등록)


0

loginuser 클래스는 다음과 같은 특성을 사용합니다. AuthenticatesUsers

해당 특성을 열면 기능이 표시됩니다 (다른 컨트롤러에 적용됨). Illuminate\Foundation\Auth\AuthenticatesUsers;

다음은 트레이 트 코드입니다. https://github.com/laravel/framework/blob/5.1/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php

형식이 잘못되어 죄송합니다.

또한 Auth::routes()그것은 인증 경로를 반환하는 함수를 호출합니다 (내 생각에)


예, Auth / dir을 살펴 보았지만 App \ Http \ Controllers \ Auth \ ResetPasswordController @ showResetForm과 같은 메서드를 찾을 수 없습니다. @ 다음에 메서드를 찾을 수있는 곳, 찾는 데 많은 시간이 걸리지 만 지금은 또한 it..I이 laravel에 새로운 오전 찾을 수 없습니다 ..
g1eny0ung

1
여기에 전체 경로는 vendor\laravel\src\Illuminate\Foundation\Auth\ResetsPasswords당신이 또는 뭔가를 변경하려는 경우, 그나마 변경이, 그냥 UR 컨트롤러에 같은 방법으로 추가 한 다음 변경,
라프 Khouadja

@Achraf Khouadja, laravel 마스터 인 것 같습니다. 도움이 필요합니다. 여기 봐 : stackoverflow.com/questions/41047583/…
moses toh dec
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.