はじめに#
Laravelを使うと簡単にログイン機能を実装できますが、反面、完成されすぎていてカスタマイズするには結構調べないといけません。大した内容ではありませんが、今回はそんな中でもリダイレクトについて備忘録として残して行きたいと思います。
ログインしていないユーザーをリダイレクト#
まずは、ログインしていない状態で、あるページにアクセスしようとするとログイン画面にリダイレクトする方法をご紹介します。ログイン前に表示させたくないコントローラーに下記のように書いてください。
public function __construct()
{
$this->middleware('auth');
}
これだけでOKです。何が起きているのかは正直よく分かりませんが、とにかくこれでログイン画面へリダイレクトされるようになります。認証に関わるものはMiddlewareで定義されています。ちなみに、リダイレクト先を変更する場合もMiddlewareで変更することが出来ます。
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('リダイレクト先');
}
}
デフォルトではloginがリダイレクト先になっていますが、自由に変えることが出来ます。
ログアウト後のリダイレクト#
認証機能を実装すると当然ログアウト機能も付いてきますが、ログアウトするとLaravelのトップページへリダイレクトされます。これも変更していきたいと思います。こんな感じで書き換えてみましょう。
//use AuthenticatesUsers;
use AuthenticatesUsers{
logout as doLogout;
}
public function logout(Request $request){
$this->doLogout($request);
return redirect('/home');
}
これで、ログアウトするとhomeへリダイレクトするようになります。loginとするとログイン画面へ遷移します。
まとめ#
こんな感じで結構簡単に書き換えることは可能ですが、中身を理解しようとすると結構時間かかると思います・・・。(自分も全然理解できてませんので、もっと勉強していこうと思います。)