1. Persiapan Database
Laravel membutuhkan tabel users untuk menyimpan data pengguna, dengan kolom seperti name, email, password, dll. Jika belum ada, jalankan migrasi default untuk tabel users:
bashCopy codephp artisan migrate
2. Membuat Controller AuthController
Anda perlu membuat controller untuk menangani logika autentikasi (login dan register).
- Buat Controller:bashCopy code
php artisan make:controller AuthController - Definisikan Metode di Controller:Metode Register: Menangani pendaftaran pengguna baru dan enkripsi password.phpCopy code
public function showRegisterForm() { return view('auth.register'); } public function register(Request $request) { // Validasi input $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|min:8|confirmed', ]); // Membuat pengguna baru $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => bcrypt($request->password), // Enkripsi password ]); // Login setelah registrasi auth()->login($user); return redirect()->route('home'); // Ganti dengan rute tujuan setelah registrasi }Metode Login: Menangani autentikasi pengguna.phpCopy codepublic function showLoginForm() { return view('auth.login'); } public function login(Request $request) { // Validasi input login $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { return redirect()->route('home'); // Ganti dengan rute tujuan setelah login } return back()->withErrors([ 'email' => 'These credentials do not match our records.', ]); }Metode Logout: Menangani logout pengguna.phpCopy codepublic function logout() { Auth::logout(); return redirect()->route('login'); // Kembali ke halaman login }
3. Membuat Rute
Definisikan rute di routes/web.php untuk menangani akses ke form login, register, dan proses autentikasi.
- Rute Register dan Login:phpCopy code
// Halaman Register Route::get('register', [AuthController::class, 'showRegisterForm']); Route::post('register', [AuthController::class, 'register']); // Halaman Login Route::get('login', [AuthController::class, 'showLoginForm']); Route::post('login', [AuthController::class, 'login']); // Logout Route::post('logout', [AuthController::class, 'logout']);
4. Membuat Form Login dan Register
- Form Register (
resources/views/auth/register.blade.php):bladeCopy code<form method="POST" action="{{ route('register') }}"> @csrf <input type="text" name="name" placeholder="Name" required> <input type="email" name="email" placeholder="Email" required> <input type="password" name="password" placeholder="Password" required> <input type="password" name="password_confirmation" placeholder="Confirm Password" required> <button type="submit">Register</button> </form> - Form Login (
resources/views/auth/login.blade.php):bladeCopy code<form method="POST" action="{{ route('login') }}"> @csrf <input type="email" name="email" placeholder="Email" required> <input type="password" name="password" placeholder="Password" required> <button type="submit">Login</button> </form>
5. Proteksi Rute yang Memerlukan Autentikasi
Untuk melindungi rute yang memerlukan pengguna terautentikasi, Anda dapat menggunakan middleware auth.
phpCopy codeRoute::get('/dashboard', [DashboardController::class, 'index'])->middleware('auth');
6. Pengelolaan Sesi
Laravel secara otomatis mengelola sesi pengguna setelah login, dan sesi ini akan bertahan hingga pengguna melakukan logout dengan memanggil Auth::logout().
7. Menambahkan Validasi
Validasi input untuk form login dan register menggunakan Request Laravel untuk memastikan data yang diterima sesuai dengan aturan yang ditentukan.
phpCopy code$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|string|min:8|confirmed',
]);
Ringkasan:
- Register: Menangani pendaftaran dengan validasi dan penyimpanan pengguna, serta login otomatis setelah registrasi.
- Login: Memverifikasi kredensial pengguna dan menjaga sesi aktif menggunakan
Auth::attempt(). - Logout: Mengakhiri sesi pengguna dengan
Auth::logout(). - Proteksi Rute: Gunakan middleware
authuntuk melindungi halaman yang memerlukan autentikasi.
Referensi Lainnya :
- https://www.ayongoding.com/membuat-login-dan-register-laravel/?authuser=0
- https://www.ayongoding.com/membuat-register-user-laravel/?authuser=0
- https://medium.com/@asmaraervin/tutorial-membuat-auth-di-laravel-9-308c544196c9?authuser=0