Diskon 50% terbatas! Masukkan kupon "programmer2025" di kelas apa saja

Middleware di fungsi construct controller Laravel 11

Saya mendapatkan error undefined middleware saat melaukannya di fungis __construct() di Laravel 11 (Inertia React)

public function __construct()
    {
        $this->middleware('auth')->except(['index', 'show']);
    }
avatar yuxxeun
@yuxxeun

100 Kontribusi 51 Poin

Diperbarui 11 bulan yang lalu

2 Jawaban:

Ini cara menggunakan middlware di Controller di Laravel 11:

<?php
 
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
use Illuminate\Routing\Controllers\HasMiddleware;
use Illuminate\Routing\Controllers\Middleware;
 
class UserController extends Controller implements HasMiddleware
{
    /**
     * Get the middleware that should be assigned to the controller.
     */
    public static function middleware(): array
    {
        return [
            'auth',
            new Middleware('log', only: ['index']),
            new Middleware('subscribed', except: ['store']),
        ];
    }
 
    // ...
}

Dokumentasi

avatar hilmanski
@hilmanski

2715 Kontribusi 2152 Poin

Dipost 1 tahun yang lalu

Tanggapan

  1. Daftarkan middleware di bootstrap/app.php

Buka file:

bootstrap/app.php

Lalu cari bagian:

->withMiddleware(function (Middleware $middleware) {
    //
})

Tambahkan definisi berikut di dalamnya:

->withMiddleware(function (Middleware $middleware) {
    $middleware->alias([
        'auth' => \App\Http\Middleware\Authenticate::class,
    ]);
})

Jika kamu juga pakai middleware lain seperti guest, verified, dsb., kamu bisa tambahkan sekaligus:

->withMiddleware(function (Middleware $middleware) {
    $middleware->alias([
        'auth' => \App\Http\Middleware\Authenticate::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'verified' => \App\Http\Middleware\EnsureEmailIsVerified::class,
    ]);
})
  1. Pastikan file middleware Authenticate ada

Cek file:

app/Http/Middleware/Authenticate.php

Dan pastikan ada, serta berisi sesuatu seperti:

namespace App\Http\Middleware;

use Illuminate\Auth\Middleware\Authenticate as Middleware;

class Authenticate extends Middleware
{
    protected function redirectTo($request): ?string
    {
        return $request->expectsJson() ? null : route('login');
    }
}

harusnya sudah tidak error lagi.

avatar MuhAlifAnhar
@MuhAlifAnhar

5 Kontribusi 0 Poin

Dipost 11 bulan yang lalu

Login untuk ikut Jawaban