migrateを実行するだけです。それから、ブラウザでhttp://your-app.dev/register、もしくはアプリケーションに割りつけたその他のURLへアクセスしてください。この2つのコマンドが、認証システム全体のスカフォールドを面倒みます。Laravelでは簡単に認証が実装できます。実際ほとんど全て最初から設定済みです。認証の設定ファイルはconfig/auth.phpに用意してあり、認証サービスの振る舞いを調整できるように、読みやすいコメント付きでたくさんのオプションが用意されています。Laravelの認証機能は「ガード」と「プロバイダ」を中心概念として構成されています。ガードは各リクエストごとに、どのようにユーザを認証するかを定義します。Laravelにはセッションストレージとクッキーを使いながら状態を維持するsessionガードが用意されています。プロバイダは永続ストレージから、どのようにユーザを取得するかを定義します。LaravelはEloquentとデータベースクリエビルダを使用しユーザを取得する機能を用意しています。アプリケーションの必要性に応じて、自由にプロバイダを追加できます。混乱しても心配ありません。通常のアプリケーションでは、デフォルトの認証設定を変更する必要はありません。Eloquentモデルをappディレクトリに用意しています。このモデルはデフォルトEloquent認証ドライバで使用しています。アプリケーションでEloquentを使用しなければ、Laravelクエリビルダを使用するdatabase認証ドライバを使用する必要があります。App\Userモデルのデータベーススキマー構築時に、確実にパスワードカラムを最低60文字確保してください。デフォルトの255文字にするのが、良い方法でしょう。users、もしくは同等の働きをするテーブルには、100文字のremember_token文字列カラムも含めてください。me"を選んだユーザのトークンを保存しておくカラムとして使用されます。QuickstartApp\Http\Controllers\Auth名前空間下に多くの組み込み済み認証コントローラがLaravelにより用意されています。RegisterControllerは新ユーザの登録、LoginControllerは認証処理、ForgotPasswordControllerはパスワードリセットのためのメールリンク処理、ResetPasswordControllerはパスワードリセット処理を行います。各コントローラは必要なメソッドを含むトレイトを使用しています。多くのコントローラでは、これらのコントローラを変更する必要は全くありません。簡単なコマンド一つで、認証に必要となるルート定義とビューをすべてスカフォールディングできる、簡単な手段をLaravelは提供しています。make:authこのコマンドは新しくインストールしたアプリケーションでのみ実行すべきで、レイアウトビュー、登録ログインビューをインストールし、同時にすべての認証エンドポイントのルートも定義します。HomeControllerも、ログイン後に必要となる、アプリケーションのダッシュボードのために生成されます。make:authコマンドはresources/views/authディレクトリへ、認証に必要なすべてのビューを生成します。make:authコマンドはresources/views/layoutsディレクトリにアプリケーションのベースレイアウトビューも生成します。CSSフレームワークを使用していますが、自由にカスタマイズしてください。認証これで、認証コントローラを含め、必要なルートとビューの準備が整いました。アプリケーションに新しいユーザを登録し、認証できるようになりました。ブラウザでアプリケーションへアクセスしてください。認証コントローラは(内部で使用しているトレイトにより)、既存ユーザの認証と、新しいユーザをデータベースへ保存するロジックをすでに備えています。パスのカスタマイズユーザが認証に成功すると、/homeのURIへリダイレクトします。これをカスタマイズするには、LoginController、RegisterController、ResetPasswordControllerのredirectToプロパティで、認証後のリダイレクト先の場所を定義してください。&#39;/&#39;;ユーザが認証に失敗した場合、自動的にログインフォームへリダイレクトします。ガードのカスタマイズ更に、登録済みユーザを認証するために使用する「ガード」をカスタマイズすることも可能です。RegisterController、ResetPasswordControllerでguardメソッドを定義してください。メソッドからガードインスタンスを返してください。Auth::guard(&#39;guard-name&#39;);}バリデーション/保管域のカスタマイズアプリケーションに新しいユーザを登録する場合に入力してもらうフォームのフィールドを変更するか、データベースに新しいユーザレコードを登録する方法をカスタマイズしたい場合は、RegisterControllerクラスを変更してください。このクラスはアプリケーションで新しいユーザのバリデーションと作成に責任を持っています。RegisterControllerのvalidatorメソッドはアプリケーションの新しいユーザに対するバリデーションルールで構成されています。このメソッドはお気に召すまま自由に変更してください。ORMを使用し、データベースに作成することに責任を持っています。データベースの必要に合わせて自由にこのメソッドを変更してください。認証済みユーザの取得Authファサードを使えば認証済みユーザへ簡単にアクセスできます。Auth::user();もしくは、ユーザが認証済みであれば、Illuminate\Http\Requestインスタンス経由で、ユーザへアクセスすることもできます。コントローラメソッドでタイプヒントしたクラスは、自動的にインスタンスが依存注入されることを思い出してください。}}現在のユーザが認証されているか調べるユーザが既にアプリケーションにログインしているかを調べるには、Authファサードのcheckメソッドが使えます。認証時にtrueを返します。checkメソッドを使っても、あるユーザが認証済みであるかを判定可能です。特定のルートやコントローラーへユーザをアクセスさせる前に、認証済みであるかをミドルウェアにより確認する場合、典型的に使用します。詳細についてはルートの保護のドキュメントを参照してください。ルートの保護ルートミドルウェアは特定のルートに対し、認証済みユーザのみアクセスを許すために使われます。LaravelにはIlluminate\Auth\Middleware\Authenticateの中で定義されているauthミドルウェアが最初から用意されています。このミドルウェアは、HTTPカーネルで登録済みのため、必要なのはルート定義でこのミドルウェアを指定するだけです。認証済みのユーザのみが入れる})-&gt;middleware(&#39;auth&#39;);もちろんコントローラーを使っていれば、ルート定義に付加する代わりに、コントローラーのコンストラクターでmiddlewareメソッドを呼び出すことができます。$this-&gt;middleware(&#39;auth&#39;);}ガードの指定authミドルウェアをルートに対し指定するときに、そのユーザに対し認証を実行するガードを指定することもできます。指定されたガードは、auth.php設定ファイルのguards配列のキーを指定します。$this-&gt;middleware(&#39;auth:api&#39;);}認証回数制限Laravelの組み込みLoginControllerクラスを使用している場合、Illuminate\Foundation\Auth\ThrottlesLoginsトレイトが最初からコントローラで取り込まれています。デフォルトでは何度も正しくログインできなかった後、一分間ログインできなくなります。制限はユーザの名前/メールアドレスとIPアドレスで限定されます。自前のユーザ認証もちろん、Laravelに含まれる認証コントローラーを使うことを強要しているわけでありません。これらのコントローラーを削除する選択肢を選ぶのなら、Laravel認証クラスを直接使用しユーザの認証を管理する必要があります。それでも簡単です!Laravelの認証サービスにはAuthファサードでアクセスできます。クラスの最初でAuthファサードを確実にインポートしておきましょう。次にattemptメソッドを見てみましょう。}}attemptメソッドは最初の引数として、キー/値ペアの配列を受け取ります。配列中の他の値は、データベーステーブルの中からそのユーザを見つけるために使用されます。上の例ではemailカラムの値により、ユーザが取得されます。ユーザが見つかれば、配列でメソッドに渡されたハッシュ済みのpassword値と、データベースに保存してあったハッシュ済みpasswordが比較されます。2つのハッシュ済みパスワードが一致したら、そのユーザの新しい認証セッションが開始されます。attemptメソッドは、認証が成功すればtrueを返します。失敗時はfalseを返します。リダイレクタ―のintendedメソッドは、認証フィルターにかかる前にアクセスしようとしていたURLへ、ユーザをリダイレクトしてくれます。そのリダイレクトが不可能な場合の移動先として、フォールバックURIをこのメソッドに指定してください。追加条件の指定お望みであれば、ユーザのメールアドレスとパスワードに付け加え、認証時のクエリに追加の条件を指定することも可能です。この例のように、emailを必ず認証に使用しなくてならない訳ではありません。データーベース中にあるユーザ名(username)に該当する、一意にユーザを特定できるカラムであれば何でも使用できます。特定のGuardインスタンスへのアクセスAuthファサードのguardメソッドにより、使用したいガードインスタンスを指定できます。これにより全く異なった認証用のモデルやユーザテーブルを使い、アプリケーションの別々の部分に対する認証を管理することができます。guardメソッドへ渡すガード名は、auth.php認証ファイルのguards設定の一つと対応している必要があります。//}ログアウトアプリケーションからユーザをログアウトさせるには、Authファサードのlogoutメソッドを使用してください。これはユーザセッションの認証情報をクリアします。me)機能を持たせたい場合は、attemptメソッドの第2引数に論理値を指定します。ユーザが自分でログアウトしない限り、認証が無期限に持続するようになります。me"トークンを保存するために使用する文字列のremember_tokenカラムをusersテーブルに持たせる必要があります。Laravelに用意されている、組み込みLoginControllerを使用する場合、このコントローラが使用しているトレイトにより、"remember"ユーザを確実に処理するロジックが実装済みです。me"クッキーを使用して認証されているかを判定するには、viaRememberメソッドを使用します。存在しているユーザインスタンスでアプリケーションにログインさせる必要があれば、loginメソッドにそのユーザインスタンスを指定し呼び出してください。指定されたオブジェクトはIlluminate\Contracts\Auth\Authenticatable契約を実装している必要があります。Laravelが用意しているApp\Userモデルはこのインターフェイスを実装しています。true);もちろん、使用したいガードインスタンスを指定することもできます。Auth::guard(&#39;admin&#39;)-&gt;login($user);IDによるユーザ認証ユーザをアプリケーションへIDによりログインさせる場合は、loginUsingIdメソッドを使います。このメソッドは認証させたいユーザの主キーだけを引数に受け取ります。true);ユーザを一度だけ認証するonceメソッドを使用すると、アプリケーションにユーザをそのリクエストの間だけログインさせることができます。セッションもクッキーも使用しないため、ステートレスなAPIを構築する場合に便利です。//}HTTP基本認証HTTP基本認証により、専用の「ログイン」ページを用意しなくても手っ取り早くアプリケーションにユーザをログインさせられます。これを使用するには、ルートにauth.basicミドルウェアを付けてください。auth.basicミドルウェアはLaravelフレームワークに含まれているので、定義する必要はありません。認証済みのユーザのみが入れる})-&gt;middleware(&#39;auth.basic&#39;);ミドルウェアをルートに指定すれば、ブラウザーからこのルートへアクセスされると自動的に認証が求められます。デフォルトでは、auth.basicミドルウェアはユーザを決める"username"としてユーザのemailカラムを使用します。FastCGIを使用している場合、初期状態のままでHTTP基本認証は正しく動作しないでしょう。以下の行を.htaccessファイルへ追加してください。[E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]ステートレスなHTTP基本認証セッションの識別クッキーを用いずにHTTP基本認証を使用することもできます。これは特にAPI認証に便利です。実装するには、onceBasicメソッドを呼び出すミドルウェアを定義してください。onceBasicメソッドが何もレスポンスを返さなかった場合、リクエストをアプリケーションの先の処理へ通します。}}次にルートミドルウェアを登録し、ルートに付加します。独自の認証ガードはAuthファサードのextendメソッドを使用し、定義します。サービスプロバイダの中で呼び出します。AuthServiceProviderをLaravelは予め用意しているので、この中にコードを設置できます。}}上記の例のように、コールバックをextendメソッドに渡し、Illuminate\Contracts\Auth\Guardの実装を返します。このインスタンスは、カスタムガードで定義が必要ないくつかのメソッドを持っています。カスタムガードが定義できたら、auth.php設定ファイルの、guards設定で使用できます。],],カスタムユーザプロバイダの追加ユーザ情報を保管するために伝統的なリレーショナルデータベースを使用したくなければ、Laravelに独自の認証ユーザプロバイダを拡張する必要があります。Authファサードのproviderメソッドを使い、カスタムユーザプロバイダを定義します。}}providerメソッドでプロバイダを登録したら、auth.php設定ファイルで新しいユーザプロバイダへ切り替えます。最初に、新しいドライバを使用するproviderを定義します。],],次に、このプロバイダをguards設定項目で利用します。],],ユーザプロバイダ契約Illuminate\Contracts\Auth\UserProviderは、MySQLやRiakなどのような持続性のストレージシステムに対するIlluminate\Contracts\Auth\Authenticatableの実装を取得することだけに責任を持っています。これらの2つのインターフェイスはユーザデータがどのように保存されているか、それを表すのがどんなタイプのクラスなのかに関わらず、認証メカニズムを機能し続けるために役立っています。Illuminate\Contracts\Auth\UserProvider契約を見てみましょう。$credentials);}retrieveById関数は通常MySQLデータベースの自動増分IDのようなユーザを表すキーを受け付けます。IDにマッチするAuthenticatable実装が取得され、返されます。$tokenからユーザを取得します。前のメソッドと同じく、Authenticatable実装が返されます。updateRememberTokenメソッドは$userのremember_tokenフィールドを新しい$tokenで更新します。me」ログインに成功した時の値でも、ログアウト時のnull値でも受け付けます。retrieveByCredentialsメソッドはアプリケーションへログイン時にAuth::attemptメソッドに指定するのと同じく、ユーザ認証情報の配列を引数に取ります。メソッドは認証情報に一致するユーザを裏の持続ストレージから「クエリ」する必要があります。典型的な使用方法の場合、このメソッドは$credentials['username']の"where"条件でクエリを実行するでしょう。メソッドはAuthenticatableの実装を返します。このメソッドはパスワードバリデーションや認証を行ってはいけませんvalidateCredentialsメソッドは指定された$userとユーザを認証するための$credentialsとを比較します。このメソッドは$user->getAuthPassword()の値と$credentials['password']をHash::makeで値を比較します。このメソッドはパスワードが有効であるかを示す、trueかfalseだけを返します。Authenticatable契約これでUserProviderの各メソッドが明らかになりました。続いてAuthenticatable契約を見てみましょう。プロバイダはretrieveByIdとretrieveByCredentialsメソッドでこのインターフェイスの実装を返していたことを思い出してください。getRememberTokenName();}このインターフェイスはシンプルです。getAuthIdentifierNameメソッドは、ユーザの「主キー」フィールドの名前を返します。getAuthIdentifierメソッドはユーザの主キーを返します。MySQLを裏で使用している場合、これは自動増分される主キーでしょう。getAuthPasswordはユーザのハッシュ済みのパスワードを返します。このインターフェイスはどのORMや抽象ストレージ層を使用しているかに関わらず、どんなUserクラスに対しても認証システムが動作するようにしてくれています。デフォルトでLaravelはappディレクトリ中に、このインターフェイスを実装してるUserクラスを持っています。実装例として、このクラスを調べてみてください。イベントLaravelは認証処理の過程で、様々なイベントを発行します。EventServiceProviderの中で、こうしたイベントに対するリスナを設定できます。readme.md).これは次期リリース版の翻訳で、コミュニティにより翻訳されています。