Tutorial Laravel #19: Authentication Dasar Laravel
1. Authentication di Laravel
Laravel menyediakan beberapa cara untuk implementasi authentication. Cara tercepat adalah menggunakan Laravel Breeze - starter kit resmi yang generate kode auth siap pakai. Tapi kita juga bisa buat manual untuk pemahaman yang lebih dalam.
2. Menggunakan Laravel Breeze (Recommended)
# Install Breeze
composer require laravel/breeze --dev
# Install dengan stack Blade (paling sederhana)
php artisan breeze:install blade
# Install dependency dan kompilasi asset
npm install && npm run dev
# Jalankan migration
php artisan migrate
Breeze otomatis generate: halaman login, register, lupa password, verifikasi email, profil user, dan middleware auth. Tinggal pakai!
3. Membuat Auth Manual - Login
<?php
// app/Http/Controllers/Auth/LoginController.php
namespace AppHttpControllersAuth;
use AppHttpControllersController;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
class LoginController extends Controller
{
public function showForm()
{
return view('auth.login');
}
public function login(Request $request)
{
$credentials = $request->validate([
'email' => 'required|email',
'password' => 'required',
]);
$remember = $request->boolean('remember');
if (Auth::attempt($credentials, $remember)) {
$request->session()->regenerate();
return redirect()->intended(route('dashboard'));
}
return back()
->withErrors(['email' => 'Email atau password salah.'])
->onlyInput('email');
}
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
}
4. Membuat Auth Manual - Register
public function register(Request $request)
{
$validated = $request->validate([
'name' => 'required|string|max:100',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
]);
$user = User::create([
'name' => $validated['name'],
'email' => $validated['email'],
'password' => bcrypt($validated['password']),
]);
Auth::login($user);
return redirect()->route('dashboard');
}
5. Mengambil Data User yang Login
// Di controller
$user = Auth::user();
$user = auth()->user();
$id = Auth::id();
$id = auth()->id();
// Cek status login
if (Auth::check()) { /* sudah login */ }
if (auth()->guest()) { /* belum login */ }
// Di blade
@auth
<p>Halo, {{ auth()->user()->name }}!</p>
@endauth
@guest
<a href="{{ route('login') }}">Login</a>
@endguest
6. Protect Route dengan Middleware Auth
// routes/web.php
Route::middleware('auth')->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Route::resource('artikel', ArtikelController::class);
Route::get('/profile', [ProfileController::class, 'show'])->name('profile');
});
// Route untuk guest saja (belum login)
Route::middleware('guest')->group(function () {
Route::get('/login', [LoginController::class, 'showForm'])->name('login');
Route::post('/login', [LoginController::class, 'login']);
Route::get('/register', [RegisterController::class, 'showForm'])->name('register');
Route::post('/register', [RegisterController::class, 'register']);
});
7. Konfigurasi Redirect
// app/Http/Middleware/Authenticate.php
protected function redirectTo(Request $request): ?string
{
// Jika bukan request yang expect JSON, redirect ke login
return $request->expectsJson() ? null : route('login');
}
8. Ringkasan
- Gunakan Laravel Breeze untuk auth siap pakai yang bisa langsung dikustomisasi
Auth::attempt()untuk login,Auth::logout()untuk logoutauth()->user()untuk mengambil data user yang sedang login- Protect halaman dengan middleware
authdi route
Tutorial berikutnya membahas authorization: Gate dan Policy di Laravel.
.jpg)
