ネットに転がっているチュートリアルやドキュメントは断片的な情報が多かったので、自分が実現したい要件に沿った実装はどうすれば良いのか、というところがわかるまで随分時間がかかった。
細かい事はそのうちサンプルの実装を作ってみようと思うけど、ポイントは下記点。
- ちゃんとFortifyの設定を理解する
- URLで切り分ける
- リダイレクト先のURLが直書きの箇所をカスタマイズする
- セッションの分離(guard設定しただけじゃ不十分)
- チュートリアルやサンプル実装に頼るのをやめて、頑張ってFortifyの実装を読む
ちゃんとFortifyの設定を理解する
自分はこの事を軽くみていたので、当初カスタマイズしなくても良い部分までカスタマイズしてしまっていた。
注意深くみると、Fortifyの設定変更などで十分対応できる部分もあるので、そのあたり気づけると余計なコードの変更をせず実装をシンプルに保つ事ができると思う。
URLで切り分ける
自分の場合はユーザーサイトと、管理サイトを分たかったので、シンプルにURLを /user, /admin のような形で切り分けて、アクセスされるパスによってFortifyなどの設定を切り分ける形で対応した。
リダイレクト先のURLが直書きの箇所をカスタマイズする
一部の実装でリダイレクトURLが固定なので、そのあたりはFortifyのソースをカスタマイズした。
セッションの分離(guard設定しただけじゃ不十分)
認証に使用するセッション変数は、guardの指定に関わらず同じ。なので、ちゃんとセッションを分離する場合はセッションCookieを別にして別々にセッションを管理できるようにする必要があった。
config/session.php の 'cookie' という項目をAppServiceProviderやFortifyServiceProviderなどで切り替えると良い。
チュートリアルやサンプル実装に頼るのをやめて、頑張ってFortifyの実装を読む
ネット上のサンプルや解説は、情報が断片的だったり、自分が必要としている要件からずれていて参考にならない事も多々ある。 ということで、ある程度情報を調べても問題が解決しなかった場合は、腹を括って認証周りの実装のコードを読み解いていくしかないと思う。