こんにちは、JeffTechです。
説明
Laravelのデフォルトの機能で新規登録・ログイン機能を実装した時に、新規登録&ログインをした後のリダイレクト先は/home
になっているかと思います。
今回は、そちらを変更していこうと思います。
この記事で実現できること
- 新規登録後のリダイレクト先変更
- ログイン後のリダイレクト先変更
開発環境
- MacOS Catalina
- Laravel:6.2
- PHP:7.3
実装の流れ
- RegisterControllerの変更
- LoginControllerの変更
- 余談
実装
新規登録後のリダイレクト先指定
実は実装自体はとても簡単で、新規登録後のリダイレクト先を指定するには、下記のようにapp/Http/Controllers/Auth/RegisterController.php
のRegisterControllerクラスの一番下に、redirectPathメソッドを記述するだけです。
これを実装すると何が嬉しいかというと、新規登録後に投稿一覧画面に遷移させたり、ユーザー情報の詳細を登録させる画面に遷移させたりすることが自由にできるようになります。
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
ーー省略ーー
// ログイン後のリダイレクト先を記述
public function redirectPath()
{
return 'リダイレクト先URL';
例:return 'article/index';
}
}
ログイン後のリダイレクト先指定
新規登録後のリダイレクト先指定とほぼ同じで、下記のようにapp/Http/Controllers/Auth/LoginController.php
のLoginControllerクラスの一番下に、redirectPathメソッドを記述するだけです。
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
ーー省略ーー
// ログイン後のリダイレクト先を記述
public function redirectPath()
{
return 'リダイレクト先URL';
例:return 'article/index';
}
}
余談
実は、RegisterController.php
もLoginController.php
もvendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php
のAuthenticatesUsersトレイト
をuseしており、そのAuthenticatesUsersトレイト
の中でさらにvendor/laravel/framework/src/Illuminate/Foundation/Auth/RedirectsUsers.php
のRedirectsUsersトレイト
をuseしています。
その中のredirectPaht
メソッドの中にリダイレクト先の処理が書いてあります。
その処理を各コントローラで上書きすることで、上記のリダイレクト先指定を実装しています。
最後に
少しでも役に立った!という時は、いいねをポチッとして
フォローしてくださると嬉しいです、、、笑
役に立たなかった時は、怒らないでコメント頂けますと幸いです笑
Twitterもやってますので、よかったら見てみてくださいね!
https://twitter.com/jefftechsaku