Authentication Pada Laravel – Ada banyak aplikasi berbasis web di dunia ini yang menanamkan fitur “Login” didalam nya..
Tujuan nya untuk mengamankan aplikasi tersebut dari orang-orang yang memang tidak berhak untuk mengakses sistem tersebut..
Authentication Pada Laravel
Laravel sendiri sebetulnya sudah memiliki fitur untuk membuat otentikasi / Auth nya secara otomatis, semuanya sudah disiapkan dan kita tinggal pakai saja, jelas ini sangat membantu kita dalam menghemat waktu saat sedang mendevelop sebuah aplikasi..
Baca juga : Tutorial Laravel Localization Multi Bahasa..
Walaupun begitu, tapi terkadang saya lebih suka membuat nya secara manual karena terbentur dengan kondisi tertentu..
Laravel sendiri juga sudah menyiapkan opsi jika kita ingin membuat Auth / Otentikasi secara manual, lantas bagaimana cara nya? Yuk kita bahas..
Oh iya sedikit informasi, contoh yang akan saya jabarkan disini yaitu menggunakan framework Laravel versi 8 yaa, jika kalian menggunakan versi laravel yang lain, kemungkinan besar cara ini akan tetap berjalan, tapi untuk lebih jelas nya bisa kalian kunjungi halaman resim laravel nya disini..
Membuat Sendiri Authentication Pada Laravel
Seperti yang sudah kita bahas sebelumnya, walaupun secara resmi laravel sudah memiliki starter kit nya sendiri untuk inisialisasi auth, tapi kita juga tetap bisa membuat nya secara manual..
Untuk dapat melaksanakan nya, kita membutuhkan Class Facade Auth yang kita import di dalam controller nya..
Untuk contoh nya adalah seperti berikut:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class LoginController extends Controller { /** * Handle an authentication attempt. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function authenticate(Request $request) { $credentials = $request->validate([ 'email' => ['required', 'email'], 'password' => ['required'], ]); if (Auth::attempt($credentials)) { $request->session()->regenerate(); return redirect()->intended('dashboard'); } return back()->withErrors([ 'email' => 'The provided credentials do not match our records.', ]); } }
Coba kalian perhatikan script diatas..
Pada baris ke-6, kita memanggil Class Facade Auth nya..
Kemudian pada baris ke-16, kita membuat sebuah function dengan nama authenticate, nama function ini sebetulnya bebas, boleh apa saja..
Di baris ke-18 kita membuat validasi nya, bahwa data yang dikirim yaitu berupa email dan password..
Kemudian pada baris ke-23 nya kita menggunakan perintah Auth::attempt() untuk memeriksa apakah data yang dikirim sesuai dengan yang ada di database atau tidak..
Auth::attempt() ini sudah bawaan laravel yaa, yang fungsinya untuk mengecek di database apakah data nya ada atau tidak..
Jika datanya cocok, maka akan langsung diarahkan ke halaman dashboard, tapi jika tidak cocok akan diarah kembali ke halaman sebelumnya..
Menambahkan kondisi tertentu
Kalo sebelumnya kita login hanya dengan menggunakan email dan password saja, sekarang gimana caranya kalo misalkan ada kondisi tambahan lagi, misalkan yang kolom is_active nya bernilai 1..
Maka untuk contoh koding nya adalah seperti berikut:
if (Auth::attempt(['email' => $email, 'password' => $password, 'is_active' => 1])) { // Authentication was successful... }
Contoh diatas kita menggunakan 3 parameter, yaitu email, password, dan yang kolom is_active nya adalah 1..
Jika ada data yang email dan password nya sesuai tapi kolom is_active nya tidak 1, maka akan tetap dianggap gagal dan tidak akan diproses lanjut oleh sistem..
And btw, jika kalian login menggunakan selain email pun bisa, misalkan dengan username atau first_name, tinggal kalian ganti aja parameter 1 diatas..
Fitur Remember Me
Pasti kalian sering melihat berbagai macam apliksi web yang pada saat login terdapat fitur remember me nya..
Bagi yang belum tau, fitur ini berfungsi untuk mengingat user yang sudah login tanpa ada batasan waktu atau sampai mereka melakukan logout secara manual..
Ketika fitur ini diaktifkan, user tersebut hanya perlu login satu kali saja, dan sistem akan mengingat session nya secara terus menerus sampai si user tersebut melakukan logout sendiri..
Jadi ketika keesokan harinya si user mengakses ulang web tersebut, dia tidak akan diminta untuk login lagi, karena sistem masih mengingat session nya..
Salah satu syarat untuk bisa menggunakan fitur ini yaitu pada table users nya harus terdapat kolom remember_token..
Dan untuk cara penggunaan nya yaitu kalian hanya tinggal menambahkan variable $remember di parameter kedua pada Auth::attempt() nya, sebagai contoh seperti berikut:
use Illuminate\Support\Facades\Auth; if (Auth::attempt(['email' => $email, 'password' => $password], $remember)) { // The user is being remembered... }
Login By ID
Untuk fitur kali ini, kita bisa melakukan proses authentication hanya dengan menggunakan filed id yang bersifat primary key..
Tapi syaratnya kita harus mengetahui terlebih dahulu si ID user nya yang ingin kita login kan..
Biasanya sih fitur ini saya gunakan ketika ada user yang ingin login didalam 2 aplikasi yang berbeda..
Untuk contoh koding nya adalah seperti berikut:
Auth::loginUsingId(1);
Kalian juga bisa menambahkan fitur remember me di parameter keduanya, seperti berikut:
Auth::loginUsingId(1, $remember = true);
Cara get data user yang sedang login
Caranya gampang banget, untuk narik semua object pada user yang sedang login, kalian bisa menggunakan perintah berikut:
$user = Auth::user();
Untuk contoh get nama/email user yang sedang login adalah seperti berikut:
$user = Auth::user()->name; $user = Auth::user()->email;
Cara Logout
Untuk cara logout pun gampang banget, laravel juga sudah menyiapkan nya, kita tinggal pakai saja fitur nya, contoh nya adalah seperti berikut:
public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect('/'); }
Mudah sekali bukan? Sekian tutorial dari saya, semoga bermanfaat yah.. Terima kasih..
Support Us
Jika artikel ini bermanfaat untuk kamu, membantu menyelesaikan masalah yang sedang kamu hadapi, kamu juga bisa dukung kami dengan mengunjungi halaman berikut: https://saweria.co/sangcahayaid
Terima kasih..
[…] TrendingMembuat Sendiri Authentication Pada Laravel […]