Memo

メモ > 技術 > フレームワーク: Laravel > 認証

■認証
artisanから認証の仕組みを組み込める ルーティングの設定などが書き換わるので、導入するなら初めに導入しておく方が良さそう
cd test php artisan make:auth php artisan migrate
以下のエラーが表示される場合、 データベースの文字コードがutf8mb4の場合にVARCHARの最大文字数が191文字に制限されるため 詳細は「トラブル対応」を参照
[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t oo long; max key length is 767 bytes (SQL: alter table `users` add unique ` users_email_unique`(`email`)) [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t oo long; max key length is 767 bytes
完了すると、「LOGIN」と「REGISTER」が追加される ユーザ登録、ログイン、パスワード再発行が実装される 認証処理のルーティング \test\routes\web.php に Auth::routes(); が追加され、認証用のルーティングが有効になる。ここから \test\vendor\laravel\framework\src\Illuminate\Support\Facades\Auth.php の routes() が呼ばれる。ここから \test\vendor\laravel\framework\src\Illuminate\Routing\Router.php の auth() が呼ばれる。ここから \test\app\Http\Controllers\Auth 内のファイルが呼ばれる…となる。多くの処理はtraitになっており \test\vendor\laravel\framework\src\Illuminate\Foundation\Auth 内のファイルが呼ばれる 認証処理の流れ(調査中) \test\vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers の login() がログイン時に呼ばれる処理 同トレイとの attemptLogin() で認証を行う。内部では guard() が呼ばれており、 Auth::guard() の attempt() が実行される 認証の判定(調査中) \test\app\Http\Kernel.php の $routeMiddleware で 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, と定義されており、コントローラなどで $this->middleware('auth'); を呼ぶことで、認証が必要になる Authenticate の内部では handle() から authenticate() が呼ばれ、$this->auth->guard($guard)->check() 部分で認証が確認される この命令は Auth クラスに実装されており、実際の処理は Illuminate\Auth\AuthManager に guard() がある そこから Illuminate\Auth の check() が呼ばれ、実際の処理は Illuminate\Auth\GuardHelpers に check() がある 内部では $this->user() に値があるか否かを調べている Laravelの標準Authentication(Auth)の動きを調べてみる http://qiita.com/zaburo/items/9fcf0f4c771e011a4d35 Laravel : デフォルト認証機能の動作確認 http://www.dn-web64.com/archives/web/laravel_auth_default/ Laravel ユーザなら知っておくべきAuthオートログインのこと - Shin x blog http://www.1x1.jp/blog/2014/04/lararavel-artisan-should-know-auto-login-by-auth.html

Advertisement