Implementasi Authentication Log di Laravel
Laravel Authentication Log - Dalam pengembangan aplikasi web, keamanan adalah salah satu aspek yang paling penting. Terutama dalam hal authenticationdan user authorization, penting untuk melacak setiap aktivitas yang terjadi di dalam sistem. Salah satu cara untuk meningkatkan keamanan aplikasi Laravel adalah dengan mengimplementasikan authentication log. Authentication log akan merekam setiap peristiwa terkait authentication, termasuk user login dan logout, serta percobaan login yang gagal. Dalam artikel ini, saya akan membahas mengenai implementasi authentication log di Laravel dan bagaimana hal ini dapat membantu dalam meningkatkan keamanan aplikasi.
Table of Contents
Mengapa Authentication Log Penting?
Authentication Log adalah mekanisme pencatatan semua aktivitas authentication yang terjadi dalam aplikasi. Ini mencakup aktivitas login, logout, serta percobaan login yang gagal oleh user. Log ini memberikan transparansi dan jejak audit yang berguna dalam mengidentifikasi ancaman keamanan, melacak perilaku atau aktivitas user, dan menelusuri aktivitas yang mencurigakan. Dengan memiliki authentication log yang baik, Kita dapat melacak dan menganalisis aktivitas user, mengidentifikasi potensi serangan, serta mengambil tindakan pencegahan yang diperlukan.
Mengimplementasikan Authentication Log di Laravel
Dalam Laravel, implementasi authentication Log bisa dilakukan dengan mudah menggunakan laravel authentication log package dari Rappasoft. Berikut adalah langkah-langkah untuk mengimplementasikan authentication log di Laravel:
Step 1: Install Laravel
Di langkah yang pertama, saya akan mengajak kalian untuk memulainya dari nol yaitu dengan menginstall fresh laravel project. Silakan install laravel project menggunakan laravel installer atau via composer atau dengan cara yang lainnya. Disini saya kan memberikan contoh dengan menginstall laravel menggunakan laravel installer dengan nama project laravel-authentication-log.
laravel new laravel-authentication-log Step 2: Setup Database
Lanjut ke langkah kedua. Mari kita lakukan setup database dan mailer pada laravel project yang akan digunakan.
Kenapa perlu setup mailer? Jadi ceritanya, sistem akan otomatis mengirimkan email pemberitahuan setiap terdeteksi akun user tersebut sedang login di device yang berbeda atau device baru. Untuk pengiriman email, disini saya akan menggunakan Gmail SMTP.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_authentication_log
DB_USERNAME=root
DB_PASSWORD=
MAIL_MAILER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=oryukmxsqzhbjnff
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="[email protected]"
MAIL_FROM_NAME="${APP_NAME}" Step 3: Install Laravel UI
Tentunya kita juga memerlukan fitur authentication yang nantinya setiap dari aktivitasnya seperti login atau logout akan tercatat sebagai log. Nah, untuk membuat fitur authentication di laravel, disini saya akan memakai laravel ui package. Untuk installasi laravel ui package, bisa menggunakan perintah-perintah seperti di bawah ini secara berurutan.
composer require laravel/ui
php artisan ui bootstrap --auth
npm install && npm run dev Step 4: Install Authentication Log Package
Oke. Pada step keempat ini kita akan menginstall authentication log package menggunakan perintah seperti di bawah ini.
composer require rappasoft/laravel-authentication-log Install juga geo ip package untuk menggunakan fitur location.
composer require torann/geoip Selanjutnya, kita perlu mempublikasi authentication log migration dan menjalankan migrasi database untuk membuat tabel yang diperlukan. Jalankan perintah migrasi berikut:
php artisan vendor:publish --provider="Rappasoft\LaravelAuthenticationLog\LaravelAuthenticationLogServiceProvider" --tag="authentication-log-migrations"
php artisan migrate Perintah tersebut akan membuat tabel authentication_log di database.
Kita juga bisa me-publish file view/email dengan menjalankan perintah seperti di bawah ini.
php artisan vendor:publish --provider="Rappasoft\LaravelAuthenticationLog\LaravelAuthenticationLogServiceProvider" --tag="authentication-log-views" Kemudian, publish file config dengan menjalankan perintah seperti di bawah ini.
php artisan vendor:publish --provider="Rappasoft\LaravelAuthenticationLog\LaravelAuthenticationLogServiceProvider" --tag="authentication-log-config" Karena kita juga menginstall Geo IP package, publish file config menggunakan perintah seperti di bawah ini.
php artisan vendor:publish --provider="Torann\GeoIP\GeoIPServiceProvider" --tag=config Step 5: Configuration
Buka file app/Models/User.php. Di file ini, kita perlu mengimport trait AuthenticationLoggable untuk tracking activitas authentication.
use Illuminate\Notifications\Notifiable;
use Rappasoft\LaravelAuthenticationLog\Traits\AuthenticationLoggable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable, AuthenticationLoggable;
} Tambahkan method notifyAuthenticationLogVia pada model yang menggunakan authenticatable untuk menentukan pemberitahuan akan disampaikan via chanel apa (slack, nexmo, mail). Di artikel ini saya akan memberikan contoh pemberitahuan via chanel mail (Gmail SMTP).
public function notifyAuthenticationLogVia()
{
return [ 'mail''];
} Step 6: Setup Controller & View
Di step terakhir, kita perlu setup HomeController dan view untuk halaman home. Di halaman home nanti, akan ditambahkan table yang berisikan detail aktivitas authentication dari user tersebut.
Buka file HomeController.php, ubah method index menjadi seperti di bawah ini. Jangan lupa juga untuk mengimport Model AuthenticationLog.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Rappasoft\LaravelAuthenticationLog\Models\AuthenticationLog as Log;
class HomeController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
$logs = auth()->user()->authentications;
return view('home', compact('logs'));
}
} Kemudian, pada file home.blade.php, ubah menjadi seperti di bawah ini.
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-10">
<div class="card">
<div class="card-header">Laravel Authentication Log</div>
<div class="card-body">
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">IP Address</th>
<th scope="col">Location</th>
<th scope="col">Login at</th>
<th scope="col">Login Successfully</th>
<th scope="col">Logout at</th>
</tr>
</thead>
<tbody>
@foreach ($logs as $key => $item)
<tr>
<th scope="row">{{ ++$key }}</th>
<td>{{ $item['ip_address'] }}</td>
<td>{{ $item->location ? $item->location['city'] : '-' }}</td>
<td>{{ Carbon\Carbon::parse($item['login_at'])->isoFormat('D MMMM YYYY h:mm A') }}</td>
<td>{{ $item['login_successful'] ? 'Yes' : 'No' }}</td>
<td>{{ $item['logout_at'] ? Carbon\Carbon::parse($item->logout_at)->isoFormat('D MMMM YYYY h:mm A') : '-' }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection Step 7: Testing
Oke, setelah mengikuti langkah-langkah di atas, sekarang waktunya kita untuk menguji apakah authentication log sudah terimplementasi dengan baik atau belum. Silakan jalankan laravel project kalian dan buka project tersebut pada browser untuk melakukan register atau login.
Jika muncul error seperti di bawah ini.
This cache store does not support tagging. Buka file .env, ubah value pada key CACHE_DRIVER menjadi array.
CACHE_DRIVER=array Jika teman-teman berhasil login, mungkin kalian juga akan menerima email pemberitahuan bahwa akun user yang kalian gunakan terdeteksi login di device baru. Tampilan email pemberitahuan tersebut akan seperti gambar di bawah ini.

Dan untuk tampilan tabel authentication log di halaman home akan seperti gambar di bawah ini.

Kalian juga dapat menambahkan filter atau sorting sesuai kebutuhan teman-teman.
Dengan mengimplementasikan Laravel Authentication Log Package dari Rappasoft ini dapat memudahkan kita untuk melacak dan menganalisis aktivitas authenticationdalam aplikasi Laravel. Dengan fitur-fitur yang disediakan oleh package ini, Kita dapat dengan mudah mencatat log dan melihat riwayat user authentication. Hal ini membantu meningkatkan keamanan dan memberikan informasi berharga dalam menganalisis interaksi user dengan sistem authentication Kita.
Dengan adanya Laravel Authentication Log Package, Kita dapat lebih fokus pada pengembangan fitur-fitur inti aplikasi Kita, sambil memiliki full control atas keamanan dan pelacakan aktivitas authentication.
Dan mengimplementasikan authentication log di Laravel adalah langkah penting dalam meningkatkan keamanan aplikasi web. Dengan melacak setiap peristiwa authentication, Kita dapat memiliki visibilitas yang lebih baik tentang aktivitas pengguna, melacak perilaku mencurigakan, dan mengidentifikasi potensi ancaman keamanan. Dengan menggunakan fitur bawaan Laravel dan menganalisis authentication log secara teratur, Kita dapat menjaga aplikasi Kita tetap aman dan melindungi data user dengan lebih baik.
Full Documentation: Laravel Authentication Log
Published on July 14, 2023Last updated on June 03, 2026