🔹 เกริ่นนำ
Middleware ใน Laravel คือชั้นกลางที่ช่วยกรองหรือควบคุมการเข้าถึง route ต่าง ๆ หนึ่งใน middleware ที่ใช้บ่อยที่สุดคือ auth
ซึ่งช่วยให้แน่ใจว่าผู้ใช้ได้เข้าสู่ระบบก่อนเข้าถึงหน้าที่ต้องการ เช่น Dashboard, Profile, หรือ Admin Panel
บทนี้จะสอนการใช้ middleware auth
และ guest
อย่างถูกต้อง และแนะนำการ redirect เมื่อไม่ได้รับสิทธิ์ พร้อมตัวอย่างการใช้งานจริงในไฟล์ route และ Controller
🔸 การใช้ Middleware auth
กับ Route
// routes/web.php
Route::middleware(['auth'])->group(function () {
Route::get('/dashboard', function () {
return view('dashboard');
});
Route::get('/profile', [ProfileController::class, 'show']);
});
🔸 Middleware guest
สำหรับ redirect ผู้ใช้ที่ login แล้ว
Route::middleware(['guest'])->group(function () {
Route::get('/login', [LoginController::class, 'showForm']);
});
🔸 การตั้งค่า Redirect หากไม่ได้รับสิทธิ์
Laravel จะ redirect ไปที่ /login
โดยอัตโนมัติ หากผู้ใช้ไม่ผ่าน auth
middleware
หากต้องการเปลี่ยนพฤติกรรมนี้ สามารถกำหนดใน app/Http/Middleware/Authenticate.php
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
💡 ใช้
auth:sanctum
หรือauth:api
หากทำงานกับ API