12
14

More than 3 years have passed since last update.

【Laravel6.8以降】認証関連のリダイレクト先の設定変更がDRYになったよ

Last updated at Posted at 2020-01-27

TL;DR

Laravel6.8以降では認証関連のコントローラーのRedirectToプロパティ等の内容について、個々のクラスで持つのではなく、RouteServiceProviderの定数HOMEに集約されました。

Before

app/Http/Controllers/auth/LoginController.php
<?php
// 略 
class LoginController extends Controller
{
    // 略
    protected $redirectTo = '/home';
    // 略
}

After

app/Http/Controllers/auth/LoginController.php
<?php
// 略 
class LoginController extends Controller
{
    // 略
    protected $redirectTo = RouteServiceProvider::HOME;
    // 略
}
app/Providers/RouteServiceProvider.php
<?php
// 略
class RouteServiceProvider extends ServiceProvider
{
    // 略 
    public const HOME = '/home';

変更された対象

この変更が行われた対象は、app/Http/Controllers/auth配下の以下5コントローラーと、

.
├── ConfirmPasswordController.php
├── LoginController.php
├── RegisterController.php
├── ResetPasswordController.php
└── VerificationController.php

ミドルウェアのRedirectIfAuthenticatedです。

app/Http/Middleware/RedirectIfAuthenticated.php
<?php
// 略
class RedirectIfAuthenticated
{
    // 略
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect(RouteServiceProvider::HOME);
        }

        return $next($request);
    }
}

所感

個人で新規にLaravelのプロジェクトを作成するときなどは、まずログイン後のリダイレクト先を'/home'ではなく、'/'にしていますが、ログイン後以外も含めたリダイレクト先の設定変更が一箇所で済むようになったのは良いですね。

Laravelの認証のような、もう完成仕切っているイメージのあるコードでも、まだまだDRYにできる余地があるというのが個人的には驚きでした。

参考

12
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
14