メモ > 技術 > フレームワーク: 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