2015年8月16日日曜日

Laravel5標準の認証機能

ログインに成功すると/homeというパスにリダイレクトされる。

これは、RedirectsUsersトレイトのredirectPathメソッドにハードコードされている。

但し、上記メソッド内の実装の通り、下記のプロパティを順番に調べて、プロパティが存在すればそちらを代わりに返す事になっている。
  1. redirectPath
  2. redirectTo
なるほどね。

この場合、最終的に RedirectsUsersトレイトの実装を使っているクラスはAuthControllerなので、こちらに上記のプロパティどちらかを実装して値を設定すれば、ログイン後のリダイレクト先を/homeから変更出来るというわけ。

ちなみに、調べてみると両者は下記のクラスのredirectPathメソッド内 で参照されている。
  • Illuminate/Foundation/Auth/RedirectsUsers.php
  • Illuminate/Foundation/Auth/ResetsPasswords.php
で、なんで二つあるんだろうと思ったのだが、過去のLaravelの更新履歴を見ると、どうやらredirectPathが正しく、redirectToは歴史的な理由(もしくは、過去のLaravelを使っているコードとの互換性の関係)で残されているっぽい。

When to set redirectPath property in Laravel 5 auth trait

なるほどね〜。ソースを見ると色々な事が分かりますな。

0 件のコメント:

コメントを投稿