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
Laravelの魔法をすべて嫌うのは私だけですか?
ムハンマドウスマン

1
文書化されていれば、ララヴェルの魔法は気になりません...そして、php artisan..whatを唱えている間、サーバーの周りのすねを歩く必要なく、一貫して機能しました。
baradhili

Laravelはすべて開発者向けではなく、ドキュメントを含めて新しいアプリをすばやく簡単に起動したい企業や初心者ユーザー向けです。選択肢があれば、私はまだCodeigniterを好みます。
BlackPanther

このガイドを読む: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静的メソッドroute()はどこにありますか?私はまだそれを見つけることができません、私がララベルの初心者であることを許してください...
g1eny0ung

4
Auth :: routesメソッドはここにありますgithub.com/laravel/framework/blob/5.3/src/Illuminate/Support/…とにかくルーター関数を呼び出します。役に立った場合は、回答としてマークしてください。ありがとうございます。
リー

2
Authファサードであり、で定義されconfig/app.phpます。その構成ファイルで、そのプロバイダーとして機能するクラスを見つけます。
Jason

同じですがエラーが発生します:NotFoundHttpException in RouteCollection.php line 161:、および別のAPIが正常に実行されています。
-151291

$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');AuthAPI を実行できません
151291

51

これがLaravel 5.7Laravel 5.8Laravel 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エラーがスローされます。
引き落とし

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']である必要はありません。次の理由によります:すぐに使用できるように、WebミドルウェアグループはRouteServiceProviderによって自動でroutes / 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. (Auth)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に感謝します。
バレンタイン市

上記の3つのステップで何が起こるかを口頭で説明するとよいと思いました。Auth::routes()-AuthファサードRouter-Laravelコンテナーからオブジェクトインスタンスを取得し、既存のメソッドを呼び出しますauthauth次に、によって生成されたルートとそれぞれのコントローラを定義しphp artisan make:authます。これだよ。
バレンタイン市

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

以下の2つのファイルから[ 登録]リンクを削除します。

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のようにメソッドが見つかりません。@の後にメソッドを見つけることができますが、見つけるのに時間がかかりますが、今は私も見つけられません。ララヴェルは初めてです
。– g1eny0ung

1
これがフルパスvendor\laravel\src\Illuminate\Foundation\Auth\ResetsPasswordsです。これを変更する場合は、変更しないでください。同じメソッドをurコントローラーに追加してから変更してください
Achraf Khouadja '29

@Achraf Khouadja、あなたはララベルをマスターしているようです。私はあなたの助けが必要です。ここを見て:stackoverflow.com/questions/41047583/...
TOHモーセ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.